所以這個任務是實現一個子串搜索程序,它使用一個輸入文件來搜索和一個輸入來搜索。我創建以下代碼:爲什麼不從2參數文件中讀取程序?
#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])是否正確?
您正在爲'tmp'指定'argv [1]',因此您正在尋找單詞'beta'中的字母'a'。聽起來好像你想從你用fopen打開的文件中讀取數據,所以你需要將這些數據「fread」到一個char數組中,並用'strstr'來搜索這個數據。 – Joe
正如Joe所說,你需要從文件中讀取數據('fgets()'很可能是你的朋友),然後計算你從文件中讀取的字符。目前,您正在掃描文件名稱,而不是文件內容。 (嘗試'echo「xxyyzz」> omega; ./a.out omega z'。) –
我該怎麼去做這件事?我是C新手,所以我不明白fread在這種情況下會如何工作? – user3288280