【发布时间】:2014-02-08 21:56:37
【问题描述】:
所以任务是使用要搜索的输入文件和要搜索的输入来实现一个子字符串搜索程序。我创建了以下代码:
#include <stdio.h>
#include <string.h>
int main(int argc,char *argv[])
{
FILE *fp;
fp = fopen(argv[1],"r");
if (fp == NULL)
{
printf("Error");
return 0;
}
char* tmpp[100];
int count = 0;
char* nexts = argv[2];
char* tmp = fgets(tmpp,100,fp);
while(tmp = strstr(tmp,nexts))
{
count++;
tmp++;
}
printf("%d\n\n",count);
fclose(fp);
return 0;
}
程序可以编译,但是当我在 ubuntu 终端中实现它时:
echo "aabb" >beta
./a.out beta a
1
为什么程序没有正确使用第一个参数 (argv[1]) 作为 beta 而第二个参数 (argv[2]) 作为一个?
【问题讨论】:
-
您将
argv[1]分配给tmp,因此您要在单词beta中查找字母a。听起来您想改为从使用fopen打开的文件中读取数据,因此您需要将fread该数据放入 char 数组并使用strstr搜索 THAT。 -
正如乔所说,你需要从文件中读取数据(
fgets()可能是你这里的朋友),然后计算你从文件中读取的字符数。目前,您正在扫描文件名,而不是文件内容。 (试试echo "xxyyzz" > omega; ./a.out omega z。) -
我该怎么做?我是 C 新手,所以我不明白 fread 在这种情况下是如何工作的?
-
约翰,我尝试使用 omega 和 z,但返回的是 0
-
如果我在这种情况下使用'fgets()',我是否必须将它应用于两个参数?