[英]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.