2012-12-11 37 views
0
我在與一個人的最初的字符存儲到與被構造爲一個文件中的字符數組(串)的問題

如下:C程序設計:STRLEN(),字符串,字符數問題

AB Albert Bumble 
FG Fred Goofoff 
GF Gary Flintstone 
DD Donald Duck 

char finitlett [MAX]將存儲首字母縮寫的所有首字母,AFG D. char sinitlett [MAX]將存儲首字母縮寫的所有首字母,BGF D.

問題是當我打印strlen(finitlett )該數字大於文件中的條目數量。

這是我創建檢索條目,並把它們放入數組的代碼如下:

void readf(char finitlett[], char sinitlett[], char name[][80]) 
{ 
    char fileName[20] = "text.dat"; 
    FILE*inFile = NULL; 

    inFile = fopen(fileName, "r"); 

    if (inFile == NULL) 
    { 
    printf("Error in opening the file %s\n", fileName); 
    exit(0); 
    } 

    int i = 0; 
    while(fscanf(inFile, "%c%c%80[^\n]\n", &finitlett[i], &sinitlett[i], &name[i]) != EOF){ 
     printf("Initials : %c%c | Name : %s\n", finitlett[i], sinitlett[i], name[i]); 
     i++; 
    } 

    fclose(inFile); 
    printf("Number of entries: %d\n", i); 
    printf("Length of array: %d\n", strlen(finitlett)); 
    printf("Length of array: %d\n", strlen(sinitlett)); 
} 
+0

對不起,它沒有正確出來,該文件包含換行條目。 – roxxar

+0

'strlen()'返回'size_t'類型的結果。 'printf'的''%d''格式需要一個'int'類型的參數。你應該使用'strlen()'調用,或者使用'size_t'格式的'%zu'(舊的實現可能不支持'「%zu」')。 –

回答

0

請確保您有「\ 0」初始化字符數組的。 Strlen通過查找第一個'\ 0'字符來工作,如果你的數組沒有完全填充這些以strlen開始,那麼可以將char數組中剩餘的「垃圾數據」計數爲字符串的一部分。

+0

謝謝我忘了包含\ 0來結束字符串 – roxxar