如何使用C中的文件描述符将数字(int,double)写入文件?

时间:2013-01-29 11:30:18

标签: c file-descriptor

我试过了:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    int out_fd = open("file.txt", O_WRONLY | O_CREAT, 0666);

    int i;
    scanf("%d", &i);

    char tmp[12]={0x0};
    sprintf(tmp,"%11d", i);

    write(out_fd, tmp, sizeof(tmp));

    close(out_fd);
    return 0;
}

但它在我的文件中写了一些垃圾:

enter image description here

有没有什么好的方法可以使用文件描述符写一个数字(float,int,double)给文件?感谢

谢谢你们,解决了:

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <stdlib.h>

int main(int argc, char **argv)
{
    int out_fd = open("plik.txt", O_WRONLY | O_CREAT, 0666);

    int i;
    scanf("%d", &i);

    char tmp[1]={0x0};
    sprintf(tmp,"%d", i);

    write(out_fd, tmp, strlen(tmp));

    close(out_fd);
    return 0;
}

1 个答案:

答案 0 :(得分:4)

您需要将sizeof()替换为strlen()以获取要写入的字符串的实际长度。例如: write(out_fd, tmp,strlen(tmp));