我已经使用read函数
编写了以下用于从“file.dat”读取的代码#include<stdio.h>
int main()
{
int fd,xr;
char b;
if ((fd=open("file.dat"))==-1)
{
puts("Cannot open file");
exit(0);
}
else
{
puts("File opened successfully");
}
puts("Trying to read");
do
{
xr = read(fd,b,1);
printf("%s",b);
} while(xr!=-1)
close(fd);
}
文件file.dat包含字符串“hello”但我得到一些垃圾字符作为输出。错误是什么?
答案 0 :(得分:3)
将b
的地址传递给read()
xr = read(fd,&b,1);
使用%c
代替%s
打印:printf("%c",b);
答案 1 :(得分:0)
您的printf()
格式表示您正在尝试打印字符串,这要求您为printf()
提供指向字符的指针(字符序列被视为以空值终止)。但是,您只为printf()
提供了一个字符,然后将其视为指针。
答案 2 :(得分:0)
尝试做:
printf("%c",b);
而不是
printf("%s",b);
因为%s希望您传递一个空终止的char数组(又名C-string)
答案 3 :(得分:0)
您正在为printf提供一个字符,但指定您要打印字符串。因此,它打印从b开始的所有字节,直到它到达终止的空\ 0,这可能是你的“垃圾”
答案 4 :(得分:0)