0

我尝试使用以下代码从键盘读取文本并将其写入文件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;
}
4

3 回答 3

1

write(f, s, strlen(s)) 虽然我会使用read()而不是fgets()使用它的结果而不是strlen()

于 2012-12-26T15:53:00.443 回答
0

write是错的。尝试这个:

write(f, s, sizeof(s));

第二个参数应该是指向开头的指针s。您实际传递的是指向指针的指针。

当您使用它时,请摆脱未使用的int n

int f = open("text.dat", O_RDWR | O_CREAT);

编辑添加

write() 必须使用strlen()而不是sizeof()- 你可能正在写出未初始化的垃圾,这使得文件看起来是空的。

write(f, s, strlen(s));
于 2012-12-26T15:54:36.180 回答
0

您以错误的方式打开文件。尝试open("text.dat", O_RDWR | O_CREAT,0666 );

PS
您根本没有文件的写权限。

于 2012-12-26T16:16:19.347 回答