我尝试使用以下代码从键盘读取文本并将其写入文件 text.dat 。该文件已创建,但它是空的。
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <io.h>
#include <string.h>
int main()
{
char s[201];
int n,f = open("text.dat", O_RDWR | O_CREAT);
while (fgets(s,200,stdin) != NULL)
write(f, s,sizeof(s));
close(f);
return 0;
}
答案 0 :(得分:1)
write(f, s, strlen(s))
虽然我使用read()
代替fgets()
并使用其结果而不是strlen()
答案 1 :(得分:0)
write
错了。试试这个:
write(f, s, sizeof(s));
第二个参数应该是指向s
开头的指针。你实际传递的是指向指针的指针。
在您熟悉它的同时,摆脱未使用的int n
:
int f = open("text.dat", O_RDWR | O_CREAT);
已编辑添加
您的write()
必须使用strlen()
而不是sizeof()
- 您可能会写出未初始化的垃圾,这会使出现< / em>该文件为空。
write(f, s, strlen(s));
答案 2 :(得分:0)
您正在以错误的方式打开文件。试试open("text.dat", O_RDWR | O_CREAT,0666 );
P.S。
您根本没有文件的写入权限。