【发布时间】:2011-09-05 17:00:01
【问题描述】:
如何在 C 中读取 12 位或 13 位的长整数(如书的 ISBN 号)?我想从包含书籍信息(ISBN/name/writer)的文本文件中读取数字。
文本文件的内容是这样的:
0393312836
发条橙
安东尼·伯吉斯
0199536759
中秋节
布雷特·伊斯顿·埃利斯
...
...
...
我正在使用此代码:
int main(void){
FILE *f;
char name[MAX], writer[MAX], line[MAX];
long isbn;
f=fopen("path.txt","r");
if(f == NULL){
return 0;
}
while (fgets(line, 1024, f) != NULL){
sscanf(line,"%ld", &isbn);
printf("ISBN: %ld\n",isbn);
fgets(nome, 1024, f);
printf("NAME: %s",name);
fgets(line, 1024, f);
printf("WRITER: %s",writer);
}
fclose(f);
return 0;
}
他能读懂书名和作者的名字,但他只能读9位或更少的数字。我该怎么做才能完成这项工作?
【问题讨论】:
-
您需要 long long 的格式代码,因为 long 可能只有 32 位。你试过
%lld吗? -
一个 ISBN 不是整数,有一个checksum character that can be "X"。
标签: c file integer long-integer