C中的长整数

| 大家好,这里是初学者的问题 如何在C中读取12或13位数字(如书的ISBN号)的长整数? 我想从带有书籍信息(ISBN /名称/作者)的文本文件中读取编号。 文本文件的内容如下:   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位的情况下,他才阅读数字。我必须做什么才能使这项工作? 提前致谢。     
已邀请:
        我认为对于ISBN,使用字符串会更好。您不需要对该值进行算术运算,可以存储前导零,并且需要一个字符串来存储可以在ISBN 10校验和中获得的X。     
        只需将其读取为字符串(
char
数组)并加以处理即可。使用
int
,您还会在开始时失去重要的零以及有限的范围。 ISBN数字,电话号码等最好视为字符串,因为它们不代表实数(从数学意义上来说),而仅仅是标识符。     
        尝试使用
unsigned long long
%llu
说明符。在大多数平台上,前者应为64位数字。 您也可以尝试将其读取为字符串。这取决于您是将其作为字符串还是将其作为数字来处理。 例如,如果要按字母顺序对它们进行排序,请以字符串形式读取它们。如果要将它们按数字排序,请将它们视为数字。     
        最好以String或char数组形式读取它们。 ISBN数字是您将要对其进行计算的意义上的数字。相反,它们更像是一个恰好是数字的参考字符串。读取字符数组将使您获得包含破折号或其他分隔符的ISBN号,如此处所述:http://www.isbn.org/standards/home/isbn/international/html/usm4.htm 如果您确实想将它们存储为数字,则应将其读取为char数组,并在输入中包含空格,破折号或其他非数字字符的情况下进行清理。     

要回复问题请先登录注册