[英]Why doesn't printf display data put in a buffer with the read() function?
我創建了一個具有以下內容的文件: abc
並且我想讀取(僅使用read()
函數,請不要建議另一個文件)並將其顯示在使用此程序的控制台上:
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
int main()
{
int fd;
char buf[3];
int size;
fd = open("test",O_RDONLY);
for (int i=0;i++;i<3){
size = read(fd,buf,1); // Version 2 used buf+i
printf("%c\n", buf[i]);
}
close(fd);
return 0;
}
我要求read函數一個個地檢索字節,而chars
是一個字節的大小,盡管它可以工作。 但是執行時控制台上沒有任何顯示。
有什么線索嗎?
每次read
調用都會將字符放在buf
的開頭,但是您並不總是打印出buf
那一部分。
當前,您在每次read
上讀入buf
數組的第一個條目。 替換size = read(fd,buf,1);
size = read(fd,&buf[i],1);
,它應該可以正常工作。
您的for
循環條件有點倒轉。 您需要交換條件的第二部分和第三部分。 你有:
for (int i=0;i++;i<3)
但是,由於i++
在第一次迭代期間的值為0
,因此由於條件為假,因此永遠不會進入循環。
它可能應該是:
for (int i=0; i<3; i++)
但是我建議您使用read()
的返回值來確定循環條件(如果您只想讀取3個字節,則可以使用計數器)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.