gpt4 book ai didi

c - 从文件中读取数字到C中的数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:14:29 26 4
gpt4 key购买 nike

我是 C 的新手,我正在尝试编写一个程序,该程序读取一个包含许多二进制整数的文件,然后以相反的顺序打印出这些整数。测试文件中的整数是:200300-1456296711111111-180000

整数是使用另一个文件的二进制输出写入的,因此您无法正常读取该文件。这是我到目前为止的代码:

#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/stat.h> #include <sys/types.h>

int main(int argc, char *argv[]){
int *integers;
char *file;
int fd;
struct stat fileStat;
int value;
int i;

if(argc != 2){
fprintf(stderr, "usage: intrev <input file> <output file>\n");
exit(1);
}

file = argv[1];
fd = open(file, O_RDONLY);
if(fd < 0){
fprintf(stderr, "error opening file\n");
exit(1);
}

if(fstat(fd, &fileStat) < 0){
fprintf(stderr, "error getting file size\n");
exit(1);
}

integers = malloc(fileStat.st_size * sizeof(int));

for(i = 0; i < fileStat.st_size; i++){
value = read(fd, integers + i, sizeof(int));
if(value == -1){
fprintf(stderr, "error reading file\n");
exit(1);
}
}

for(i = fileStat.st_size - 1; i >= 0; i--){
printf("%d\n", *integers + i);
}

if(close(fd) != 0){
fprintf(stderr, "error closing file -- quitting\n");
exit(1);
}

return(0);
}

我需要使用 fstat 和 malloc() 来设置数组大小。程序编译没有错误,但运行时,我得到数字 231 到 200,如下所示:231230229...201200

我有什么不正确的?非常感谢任何帮助。

最佳答案

这一行

    printf("%d\n", *integers + i); 

相当于

    printf("%d\n", integers[0] + i); 

由于运算符的优先级。

您可以使用:

    printf("%d\n", *(integers + i)); 

    printf("%d\n", integers[i]); 

关于c - 从文件中读取数字到C中的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25988301/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com