用文件io打印整行

时间:2016-12-06 15:45:34

标签: c file

这是我的电话簿的一部分'程序。

void viewall(){
    int n, checking = 0;
    char name[50];

    fp = fopen("Phonebook.txt","r");
    printf ("\n\n");

    fscanf (fp, "%s %d", name, &n);
    while (!feof(fp)){
        printf (" %s +880%d\n", name, n);
        fscanf (fp, "%s %d", name, &n);
        ++checking;
    }

    if (checking == 0){
        printf (" Contact List is Empty. No Contacts to Show...");
    }

    printf ("\n\n");
    fclose(fp);

    menu();
}

此部分显示列表中的所有联系人。但如果任何联系人姓名有两个部分,他们就会分开。例如:我输入Anik Shahriar作为名称,然后输入我的号码。我查看了我的文件,这些数据应该如何。

Anik Shahriar 01*******93

但是当我想显示所有联系人时。它打印得像这样:

Anik 0
Shahriar 01*******93

如何让程序打印整行?

1 个答案:

答案 0 :(得分:1)

此行为是由行

引起的
fscanf (fp, "%s %d", name, &n);

格式标识符%s扫描单个字符串。任何空白字符都会结束扫描。

http://www.cplusplus.com/reference/cstdio/scanf/

  

%S
  字符串
  任意数量的非空白字符,   在找到的第一个空格字符处停止。终止空值   字符会自动添加到存储序列的末尾。

我建议使用ca CSV文件并使用格式字符串。

scanf("%[^,] %d", name, number)

别忘了测试scanf结果值。