扫描文件中的字符时出现问题

时间:2015-10-18 15:19:18

标签: c file input character

在扫描文件中的字符时,我的代码出现了问题。这是我的代码:

int main(int argc, char **argv){
    FILE *ifp = fopen("input.txt", "r");

    char check, key;
    char buffer[MAX_STRING_LENGTH + 1];
    char str[MAX_STRING_LENGTH + 1];
    node *head = NULL;

    fscanf(ifp, "%s", buffer);
    head = stringToList(buffer);

    while(fscanf(ifp, "%c", &check) != EOF){
        switch(check){
        case '@':
            //fflush(stdin);            //this is commented out because fflush
            fscanf(ifp, "%c", &key);         //did not seem to solve the issue
            fscanf(ifp, "%s", str);
            printf("%c, %s\n", key, str);
            head = replaceChar(head, key, str);
            break;

        //more cases follow, but they are irrelevant to this question

我的问题是我的程序在调用时无法将字符扫描到键。例如,当文件中特定案例的输入为

@ r ri

print语句提供以下内容:

( ), (r)

print语句中有一个空白区域应该打印r,据我所知,该字符是扫描到字符串中。因此该计划功能失调。我需要知道如何正确扫描这个角色。谢谢。

1 个答案:

答案 0 :(得分:1)

  

fscanf(ifp, " %c", &key);然后fscanf(ifp, " %s", str);注意到其他space。阅读' '后,您正在阅读'@'。 - David C. Rankin

这回答了我的问题。很奇怪C会因为这么简单的事情搞砸了。

相关问题