gpt4 book ai didi

c - 如何用C从文件中读取并打印十六进制数

转载 作者:行者123 更新时间:2023-11-30 19:57:40 25 4
gpt4 key购买 nike

我正在尝试从文件中读取 14 位长的十六进制数字,然后打印它们。我的想法是使用 long long int 并使用 fscanf 从文件中读取行,就好像它们是字符串一样,然后使用 atoll 将字符串转换为十六进制数字。问题是我根据 valgrind 在 fscanf 行上获得了一个 seg 值,我完全不知道为什么。这是代码:

#include<stdio.h>

int main(int argc, char **argv){

if(argc != 2){
printf("error argc!= 2\n");
return 0;
}

char *fileName = argv[1];
FILE *fp = fopen( fileName, "r");

if(fp == NULL){
return 0;
}

long long int num;
char *line;

while( fscanf(fp, "%s", line) == 1 ){
num = atoll(line);
printf("%x\n", num);
}

return 0;

}

最佳答案

您确定要将数字读取为字符串吗?为什么不让 scanf 为您完成这项工作?

long long int  num;

while( fscanf(fp, "%llx", &num) == 1 ){ // read a long long int in hex
printf("%llx\n", num); // print a long long int in hex
}

顺便说一句,请注意 printfll 大小说明符到 %x 的转换 - 它定义整数值将为 long long 类型。

编辑
下面是一个简单的示例,两个循环读取 3 行输入(连续行中有两个、没有和三个数字),采用“十六进制整数”格式和“字符串”格式:
http://ideone.com/ntzKEi
调用rewind 允许第二个循环读取相同的输入数据。

关于c - 如何用C从文件中读取并打印十六进制数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40175272/

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