如何从stdin读取文本并使用低级文件处理将其写入文件?

时间:2012-12-26 15:50:33

标签: c stdin

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

3 个答案:

答案 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。
您根本没有文件的写入权限。