作者ny8656 (來不及了)
看板C_and_CPP
標題[問題] C fgets() 與陣列
時間Wed Sep 29 10:47:18 2010
用fgets 一行一行讀取檔案(檔案內是100行亂數)
想將讀取到的每行數字,再放入另一個陣列A[]
但是跑出來的結果都怪怪的...
直接printf(str)可以正確看到已經讀取的所有數字
但就是不知道要怎麼放進陣列...
int main()
{
int i = 0;
char A[99];
char str[128];
FILE *fp;
fp = fopen("mlist.txt","r");
while(fgets(str,4,fp) != NULL)
{
printf(str);
i++;
}
fclose(fp);
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.128.194.57
→ james732:「放進陣列」的意思是? 09/29 10:48
→ ny8656:將str裡的內容放進自己另外宣告的新陣列A裡頭 09/29 10:49
→ james732:那你的A必須宣告成二維,譬如 char A[99][128]; 09/29 10:50
→ james732:等等,還是你需要的其實只是 strcpy(A, str); 而已? 09/29 10:50
※ 編輯: ny8656 來自: 140.128.194.57 (09/29 10:50)
→ james732:如果你是說 A[0] 第一個數字,A[1]第二個數字...的話 09/29 10:53
→ james732:那你的A就必須是 char A[100][128]; 之類的二維 09/29 10:53
→ james732:在 while 裡加個 strcpy(A[i], str); 就可以了 09/29 10:54
→ ny8656:恩,我想要的就是你指的A[n]是第n個數字 09/29 10:58
→ ny8656:是我想要的結果!但是想再問一下,為什麼會用到二維陣列? 09/29 11:14
→ james732:先想想:為什麼你的 str[128] 必須是一維陣列呢? 09/29 11:17
推 stupid0319:fgets(A,99,fp); <這樣可以嗎 09/29 11:22
推 ledia:說個可能比較無關的, 如果檔案裡有 %s 之類的, 丟進 printf 09/29 11:23
→ ledia:直接印也不太妥當 09/29 11:23
→ james732:沒有想到樓上的問題耶 XD 那要怎麼避開這個問題? 09/29 11:26
→ ny8656:瞭解了...thx 09/29 11:29
推 stupid0319:sturct myStr { char str[128]} A[99]; 09/29 11:47
推 ledia:fputs ? 09/29 12:22
→ james732:都忘了有fputs,還想說掃整個字串檢查有沒有%s...XDD 09/29 12:23
→ loveme00835:fputs 正解! 不過這樣就得每個數字各自一行了, printf 09/29 12:26
→ loveme00835:給格式字串 "%s" 也可 09/29 12:26
推 ledia:printf %s 感覺就有點繞路, 因為要印的不是 formatted str 09/29 14:33
→ ledia:話雖如此我還是很長這樣用就是了 orz 09/29 14:33