簡體   English   中英

如何將 stdin 中的字符讀入 c 中的數組?

[英]How to read characters from stdin into an array in c?

我上一次做 C 是在 1991 年,現在我正在幫朋友做作業。

他必須將標准輸入中的字符放入一個數組中。 看起來很簡單。 我想我會用 這個問題作為參考點

我們有這個:

    printf("Input the line\n");
    i=read(0, arg, sizeof(char)*9);

IIUC 為我們提供了字符,根據答案注釋,我們應該能夠將字符直接放入 arg 數組中,如下所示:

   while ((c = getchar()) != '\n' && c != EOF  && i2<9 ) {
     arg[i2] = c;
     i2++;
   }

然而,打印這個(repl.it 鏈接)

 ./main
Input the line
123 456 789

893 456

所以看起來即使我試圖通過在 while 循環中添加i2<9來將其限制為索引 [0,8],它仍然會抓取89並將其放在數組的開頭,因為數組只適合 9 個字符.

為什么是這樣? 我是否以正確的方式解決這個問題?

我們不允許使用 fpurge。 我假設教授正在嘗試教他們如何手動執行此操作...

我不明白你在這里想做什么,

   while ((c = getchar()) != '\n' && c != EOF  && i2<9 ) {
     arg[i2] = c;
     i2++;
   }

上述循環主要用於在read后消耗輸入 stream 中的剩余輸入。


也就是說,與

i=read(0, arg, sizeof(char)*9);

您正在將9字符讀入arg但您輸入了11字符和\n

因此arg將有內容,

  123 456 (null)   <---contents
  01234567 8       <---indexes

還記得89\n留在 stream 中。 因此,使用while循環,您可以從索引089讀入arg數組。

暫無
暫無

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

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