【问题标题】:How to execute C code which requires strings and file names as input through Terminal?如何执行需要通过终端输入字符串和文件名的 C 代码?
【发布时间】:2021-01-26 19:48:42
【问题描述】:

我是 C 语言的新手,我正在编写适用于文件的代码。但我无法通过终端执行它,因为我需要通过终端命令传递字符串和文件名。 P.s:我自己谷歌搜索找不到合适的解决方案,对不起,如果之前有人问过这个问题。

这是我的代码:

     #include <stdio.h>
     #include <string.h>
     #include<stdlib.h>
     #define N 102
     #define n 21

     void replace(char *s, int l, int r, char *s2);

     int main(int argc, const char * argv[]) {
         if (argc!=5) {
             fprintf(stderr, "Wrong input format!\n");
             exit(1);
         }
         FILE *fp1, *fp2;
         fp1=fopen(argv[2], "r");
         fp2=fopen(argv[4], "w");
         if (fp1==NULL || fp2==NULL) {
              fprintf(stderr, "Wrong input!\n");
              exit(1);
         }
         char s1[n], s2[n];
         strcpy(s1, argv[1]);
         strcpy(s2, argv[3]);
         char line[N], line2[N];
         int l,r, ok;
         while (fgets(line, N, fp1)) {
             int i=0;
             while (line[i]!='\0') {
                 l=r=0;
                 ok=1;
                 int k=0, j=i;
                 while(j<sizeof(s1)){
                     if (line[j]!=s1[k]) {
                         ok=0;
                     }
                     k++;
                 }
                 if (ok) {
                     replace(line, i, j, s2);
                 }
                 i++;
             }
             fputs(line, fp2);
         }

         while (fgets(line2, N, fp2)) {
             puts(line2);
         }
         return 0;
     }

     void replace(char *s, int l, int r, char *s2){
         char line[N], line2[N];
         strncat(line, s, l);
         strcat(line, s2);
         int k=0, j=r+1;
         while (s[j]!='\0') {
             line2[k]=s[j];
             k++;
             j++;
         }
         strcat(line, line2);
         strcpy(s, line);
     }

【问题讨论】:

    标签: c command-line terminal


    【解决方案1】:

    在您的终端中,您可以使用命令gcc myfile.c 编译您的代码(如果您需要标志,请查看 gcc 的人)。

    编译完成后,您可以通过键入./a.out 来执行名为a.out(如果您没有重命名它)的执行文件。这将执行您的程序。

    如果您在 main 中需要参数,您只需键入:./a.out myArgv1 myArgv2 ,依此类推。 您的参数可以是字符串、文件名等... 这适用于 Linux 和 MacOS。

    【讨论】:

      【解决方案2】:

      首先,您必须检查您是否安装了 gcc(C 编译器)。写: gcc --version 你应该会看到你的版本。 一旦你确定有 gcc,编译你的程序:

      gcc yourfile.c -o nameofexecutable 注意:使用该选项,您可以为可执行文件选择所需的任何名称。

      最后,使用所需的参数执行您的文件。

      ./nameofexecutable argument1 argument2 argument3 注意:显然你可以引入 0、1、2 或任何参数列表。

      【讨论】:

      • 分段错误不是因为你执行它的方式,它可能是因为你的代码。可能会有一些小错误。我建议你使用 gdb(C 调试器),这样你就可以逐行执行,直到找到问题为止。
      猜你喜欢
      • 2014-11-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-30
      • 2021-05-29
      • 2021-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多