我是C新手,我想知道如何搜索一個特定的字符串以及在具有多個數字和單詞的文件中跟隨它的數字。如何檢查一個字符串是否在一個文件中
輸入的文件,我使用看起來像這樣:
TREES 2
BENCHES 5
ROCKS 10
PLANTS 8
我知道如何使一個函數讀取一個字符串,我知道如何比較兩個字符串,但我不知道如何把它們都在一起,或者如何設置陣列以讀取整個文件。
我一直在使用strcmp
,但我只是不知道如何去初始化我正在尋找的詞。
我是C新手,我想知道如何搜索一個特定的字符串以及在具有多個數字和單詞的文件中跟隨它的數字。如何檢查一個字符串是否在一個文件中
輸入的文件,我使用看起來像這樣:
TREES 2
BENCHES 5
ROCKS 10
PLANTS 8
我知道如何使一個函數讀取一個字符串,我知道如何比較兩個字符串,但我不知道如何把它們都在一起,或者如何設置陣列以讀取整個文件。
我一直在使用strcmp
,但我只是不知道如何去初始化我正在尋找的詞。
你可以做這樣的事情:
#include <stdio.h>
int main(void){
FILE *fp;
char *searchString="ROCKS";
fp = fopen("myfile.txt", "r");
char *buf[100];
int myNumber = -1;
while((fgets(buf, 100, fp)!=NULL) {
if(strstr(buf, searchString)!=NULL) {
sscanf(buf + strlen(searchString), "%d", &myNumber);
break;
}
}
printf("After the loop, myNumber is %d\n", myNumber);
fclose(fp);
}
免責聲明 - 未經測試。應該接近...
創建一個包含要搜索的單詞的數組。創建一個外部循環,一次一個字符偏移地前進通過數據文件流。創建第二個內部循環,遍歷你的數組項搜索。內部循環根據外部循環提供的數據檢查數組中的每個項。使用strncmp將每個比較的長度限制爲正在搜索的單詞的長度。匹配後,檢查源緩衝區中的以下字符以確保它不會否定匹配。
這將有助於極大地告訴我們你正在尋找什麼,ROCKS或10或兩者。無論如何,我認爲在這種情況下strstr()是你的朋友。 –
您也可以將數字作爲字符串讀取,然後使用'strcmp'進行比較。 –
或'strncmp' ...我想他們正在問如何從文件中讀取字符串。帶有'fgets'的循環將是最好的選擇。 – paddy