我已经在linux中编写了读取,写入系统调用的示例代码....执行没有任何问题。
结果,将缓冲区数据存储到文件中....
要存储在文件中的预期结果是Hello World!..但是我将数据放在像这个Hello World这样的文件中!^ @
为了获得预期的结果我还需要做些什么?
int main(int argc , char *argv[])
{
int fd;
char buff[14];
fd = open("myfile.txt",O_CREAT| O_WRONLY,0777);
if(fd == -1)
{
printf("Failed to open the file to write");
exit(0);
}
write(fd,"Hello World!\n",13);
close(fd);
fd = open("myfile.txt",O_RDONLY,0777);
if(fd == -1)
{
printf("Failed to open the file to read");
exit(0);
}
read(fd,buff,14);
buff[14] = '\0';
close(fd);
printf("Buff is %s\n",buff);
return 0;
}
答案 0 :(得分:2)
您将buff
声明为14个字符,但是您在第15个位置编写了终结符。这导致两个 undefined behavior个实例:一个因为您写出了界限数组的一个,一个是因为当你打印缓冲区时,你在第14位有未初始化的数据。