我是C新手,所以我完全被以下行爲所困惑。使用pipe()
和fork()
我閱讀下面的瑣碎Ruby程序的輸出:通過對讀函數的調用在read()緩衝區中存在亂碼?
puts "success"
在C:
n = read(fd[0], readbuffer, sizeof(readbuffer));
printf("received: %s", readbuffer);
然而,printf
在打印一堆那些'無法識別的字符'符號(如鑽石中的問號)到控制檯。此外,做比較如:
if (strcmp(readbuffer, "success") == 0)
{
/* do something */
}
失敗。我究竟做錯了什麼?
編輯:聲明按要求。我不知道有關memsetting,我在C.
第一天int fd[2], in;
pid_t pid;
char readbuffer[6];
編輯:
答案由「萬畝太短」也解決了這個問題。共識似乎是使用memset
是矯枉過正。我是新手C程序員,所以我不得不相信評論家的意見。然而,這是一個論據和廣告,而且太短可能確實比較合適。無論如何,我建議閱讀這兩個答案,因爲任何「矯枉過正」可能仍然是微不足道的。
在使用它之前,你是否使用'memset'緩衝區?如果你沒有,那麼緩衝區不是空終止,並會給你垃圾值。 –
聲明readbuffer靜態或全局,它將被初始化爲零。 – DigitalRoss
請顯示用聲明編輯的readbuffer和fd –