int main()
{
FILE *read_fp;
char buffer[BUFSIZ + 1];
int chars_read;
memset(buffer, '\0', sizeof(buffer));
read_fp = popen("cat popen*.c | wc -l", "r");
if (read_fp != NULL) {
chars_read = fread(buffer, sizeof(char), BUFSIZ, read_fp);
while (chars_read > 0) {
buffer[chars_read - 1] = '\0';
//buffer[chars_read] = '\0';
printf("Reading:-\n %s\n", buffer);
chars_read = fread(buffer, sizeof(char), BUFSIZ, read_fp);
}
pclose(read_fp);
exit(EXIT_SUCCESS);
}
exit(EXIT_FAILURE);
}
FREAD(代碼)返回項目 數量成功讀取有一個錯誤在這裏使用的fread
我認爲有以下行應該從
buffer[chars_read - 1] = '\0';
改變
至
buffer[chars_read] = '\0';
我是否正確?
只是因爲'緩衝[chars_read - 1] ==' \ n''不能保證這是輸入的結尾...... –
正確;這個代碼有很多*錯誤,真的。它根本不處理多行,並且會在中間緩衝區中錯過一行;這對'fgets()'來說真的是一份工作。 – geekosaur