如何执行需要通过终端输入字符串和文件名的C代码



我是C语言的新手,我正在编写可以处理文件的代码。但我不能通过终端执行它,因为我需要通过终端命令传递字符串和文件名。附言:我在谷歌上找不到合适的解决方案,很抱歉以前有人问过我这个问题。

这是我的代码:

#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]!='') {
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]!='') {
line2[k]=s[j];
k++;
j++;
}
strcat(line, line2);
strcpy(s, line);
}

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

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

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

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

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

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

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

最新更新