0

尝试将整数表发送到文件,但出现一些错误:

        fd[0] = open(argv[1], O_WRONLY|O_CREAT|O_SYNC, 0700);
        const int size = 20;
        int *p = new int[size];
        for(int i=0; i<size; i++) {
            p[i] = i;
        }
        write (fd[0], p, sizeof(int)*size); 
        close(fd[0]);

在我的文件中调用此代码后,我看到如下内容\00\00\00\00\00\00\00

4

2 回答 2

2

这将写入空格分隔的整数,尾随空格。除了“文本”之外,您并没有真正说出您需要什么格式。

    fd[0] = open(argv[1], O_WRONLY|O_CREAT|O_SYNC, 0700);
    if(fd[0] < 0) {
        perror("open");
    }
    const int size = 20;
    //int *p = new int[size];
    for(int i=0; i<size; i++) {
        char buf[20];
        snprintf(buf, sizeof(buf), "%d ", i);
        write(fd[0], buf, strlen(buf));
    }
    //write (fd[0], p, sizeof(int)*size); 
    close(fd[0]);
于 2013-11-01T21:35:46.147 回答
1

当你在文件中写入数据时,如果你想用文本编辑器读取它,你需要将变量转换为字符串(序列化)。

为此,您可以使用fprintfand fscanf,或者实现自己的解析函数,您只需要操作字符串。

为了生成可读文件,您的代码可以修改为:

FILE *f = fopen(argv[1], "w"); // "a", "w" or what you want
const int size = 20;
int *p = new int[size];
for(int i=0; i<size; i++) {
  p[i] = i;
  fprintf(f, "%d ", p[i]); 
}

fclose(f);

要读取文件,您可以执行以下操作:

FILE *f = fopen(argv[1], "r");
int nb = 0;
int tab[100]; // a buffer

while((1 == fscanf("%d ", &tab[nb])) && (nb < 100))
  nb++;
于 2013-11-01T21:23:35.290 回答