簡體   English   中英

打印出字符串數組

[英]Printing out an array of strings

我在嘗試創建一個數組然后從該數組中打印前10個元素時遇到麻煩...這是我到目前為止的內容:

#include <stdio.h>

int main()

{
    char term[200][40];
    FILE *ifp;
    int i;
    ifp = fopen("terms.txt", "r");

    if (ifp == NULL){
    fprintf(stderr, "Could not open file...\n");
    }

    fgets(term, 40, ifp);

    for(i = 1; i < 11; i++) {
    printf("%s", term[i-1]);
    }
}

另外,編譯器給我一個錯誤:“注意:預期為'char * strict ',但參數的類型為'char(*)[40]'”

fgets(term, 40, ifp); //THIS IS WRONG

修改for循環並刪除上面的語句

for(i = 1; i < 11 && fgets(term[i-1], 40, ifp)!=NULL ;i++) {
printf("%s", term[i-1]);
}
char term[200][40];

是一個200個字符串緩沖區的數組,能夠容納40個字符。

fgets(term, 40, ifp);

嘗試從文件中讀取字符串並將其存儲以緩沖第一個參數指向的字符串(期望char* )。

嘗試通過以下方式閱讀:

int i = 0;
while (fgets(&term[i++][0], 40, ifp);

如果失敗, fgets將返回NULL使其停止。

這是因為將term作為任何數組傳遞給函數時,將其視為指向其第一個元素的指針。
術語的第一個元素是...由40個字符組成的數組,因此您通過

char (*)[40]

fgets ,它期望

char *


順便說一句,您的編譯器比我早告訴您完全相同的內容。

 fgets(term, 40, ifp);

        for(i = 1; i < 11; i++) {
        printf("%s", term[i-1]);
        }

在上面的代碼中,您從ifp讀取了一個字符串並將其存儲在term但是隨后您嘗試讀取10個字符串,並且由於未初始化term,因此您不知道要打印什么內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM