我正在用C编写一个程序,我正在使用fread
读取文本文件,我无法正确读取整数。
文本文件中a
的值为16,我得到的输出是:
a= 538976288
我使用了一个类似的代码来读取成功的二进制文件。我想了解在c中读取ASCII表的最佳方法是什么。
表大小由文件顶部的整数给出。数据用空格分隔。
这是我写的简单代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char *argv[])
{
int a, flag_fread;
FILE * p_finput = NULL;
char * filename = NULL;
filename = malloc(sizeof(char) * (strlen(argv[1]) + 1));
strncpy(filename, argv[1],strlen(argv[1]));
filename[strlen(argv[1])] = '\0';
p_finput = fopen(filename, "r");
if (p_finput == NULL)
{
printf("couldn't open %s \n", filename);
abort();
}
flag_fread = fread(&(a), sizeof(int), 1, p_finput);
printf("a= %d \n", a);
fclose(p_finput);
free(filename);
return 0;
}
答案 0 :(得分:3)
要阅读以文字书写的值,您应该使用fscanf
,如下所示:
fscanf(p_finput, "%d", &a);
答案 1 :(得分:2)