无法使用C中的read()函数读取

时间:2013-07-09 05:02:30

标签: c

我已经使用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”但我得到一些垃圾字符作为输出。错误是什么?

5 个答案:

答案 0 :(得分:3)

  1. b的地址传递给read() xr = read(fd,&b,1);

  2. 使用%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)

  1. 尝试: *输出( “%C”,B); *,因为你在do-while {}
  2. 中读了一个字符
  3. 并将b的地址传递给read()为xr = read(fd,&amp; b,1);