尝试将整数表发送到文件,但是我遇到了一些错误:
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
。
答案 0 :(得分:2)
这将写入空格分隔的整数,并带有尾随空格。除了“text”之外,你并没有真正说出你需要的格式。
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]);
答案 1 :(得分:1)
在文件中写入数据时,如果要使用文本编辑器读取数据,则需要将变量转换为字符串(序列化)。
为此,您可以使用fprintf
和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++;