[爆卦]Fgets printf是什麼?優點缺點精華區懶人包

為什麼這篇Fgets printf鄉民發文收入到精華區:因為在Fgets printf這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者ist123 (123)看板C_and_CPP標題[問題] fgets與pipe一問時間Sun ...


開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
Linux

額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)


問題(Question):


在我要執行fgets那個迴圈時

下面那個printf就不會執行

不過我只要把while那行刪掉

他的111就會出現

但是我stdin的值還是無法顯示出來

不知道是哪邊有問題

我有把它單獨出來測試過

可是正確的把我的stdin印出

這代表我pipe應該沒有接錯

但是只要加到我的主程式後

就是不會執行

研究了好幾天還是搞不出來

跪求大大幫忙

餵入的資料(Input):


預期的正確結果(Expected Output):

印出我stdin的值
錯誤結果(Wrong Output):
完全不會執行while後的那行

程式碼(Code):(請善用置底文網頁, 記得排版)
close (STDIN);
dup ( pfd_1 [READ] );

close ( pfd_1 [READ] );
close ( pfd_1 [WRITE] );


while (fgets ( strbuf, 1024,STDIN) != NULL )
wprintw(der[3], "111%s\n", STDIN);

wrefresh(der[3]);
memset( strbuf,'\0',sizeof(strbuf));

補充說明(Supplement):

我是我把我的指令寫在前一個PIPE的write

想要把值丟給bash執行在將直接到另一個pipe的sidin

再從這邊把我給bash算完的值從stdin中讀出

最後在印出

不知道到底是哪邊出問題


希望大大幫忙我><



--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.122.184.195
kiedveian:while 加 refresh試試 10/28 20:43
kiedveian: ^裡面 10/28 20:44
ist123:還是不行>< 不過還是很感恩你的幫助喔 10/28 21:12
kiedveian:看來是fgets沒讀完卡住,你的指令有加\n或EOF嗎 10/28 21:20
ist123:你是說我的STDIN最後有沒有加\n嗎? 我來去研究一下 感恩 10/28 21:25
kiedveian:print那行傳入的參數應該是buffer吧? 10/28 21:26
ist123:是buff 我這邊打錯 本來打對的 感恩喔 還在測試+\n中感恩 10/28 21:31
ist123:想不到方法讓我stdin輸出的值加\n..... 10/28 21:54
ist123:原本想要用read出來在加\n 可是好像不行.. 10/28 21:54


現在改成
write (STDIN, cmdbuff_2, sizeof(cmdbuff_2));
cmdbuff_2[ sizeof(cmdbuff_2)-1 ] = '\0';
wprintw(der[3], "111%s\n", cmdbuff_2);

加入結尾字元

這樣可以顯示出111

之後cmdbuff_2他會變成亂碼

用%d它可以顯示出一串數字

所以我這樣取只取到記憶體位址嗎?

再次感謝各位幫忙

感恩



※ 編輯: ist123 來自: 140.122.184.195 (10/28 22:08)

你可能也想看看

搜尋相關網站