我需要模拟2个文件之间grep -f命令的效果 代码编译时没有错误,但是当我运行它而不是输出时,它显示分段错误(核心转储) 我怎么能这样呢?另外,如果您可以帮助提供一种更好的方法来打开 f1 和 f2,而不使用 aux1 和 aux2 来提供文件名,那就太好了。预先感谢。
//我知道我必须检查代码是否有足够的参数,如果没有,我应该对 stderr 做一些事情(这是我在课堂上被告知要做的事情,但我不知道如何做)
#include <stdio.h>
#include <string.h>
int main(int argc, char *argv[])
{
FILE *file1;
FILE *file2;
char aux1[100]="",aux2[100]="";
strcpy(aux1,argv[1]);
strcpy(aux2,argv[2]);
file1 = fopen("aux1","r");
file2 = fopen("aux2","r");
char s1[100]="",s2[100]="";
char aux[100]="";
while(fscanf(file1,"%s",aux)!=EOF)
{
strcat(s1,aux);
strcat(s1," ");
}
s1[strlen(s1)-1]='\0';
while(fscanf(file2,"%s",aux)!=EOF)
{
strcat(s2,aux);
strcat(s2," ");
}
s2[strlen(s2)-1]='\0';
printf("%s\n",strstr(s2,s1));
return 0;
}
FILE *file1;
FILE *file2;
char aux1[100]="",aux2[100]="";
strcpy(aux1,argv[1]);
strcpy(aux2,argv[2]);
file1 = fopen("aux1","r");
file2 = fopen("aux2","r");
aux1
和 aux2
之前,您无需检查是否提供了任何命令行参数。"aux1"
和 "aux2"
作为文件名称,而不是 aux1
和 aux2
的内容。while(fscanf(file1,"%s",aux)!=EOF)
{
strcat(s1,aux);
strcat(s1," ");
}
s1
的长度,该长度仅足以容纳 100 个字符。printf("%s\n",strstr(s2,s1));
strstr()
返回 NULL
。在将其传递给 printf()
之前,您不会检查其返回值。