fscanf无法从包含星号字符

时间:2018-03-31 15:58:47

标签: c scanf

我尝试读取包含空框“*”的文件,错误消息未打印,因此文件已打开,但扫描不起作用。我试图打印count变量,count的值为0.我真的不知道故障在哪里。请帮忙......谢谢

the file content that I want to read

int openmap(int file_no){
char filename[32];
char mapp[100][100];
int number;
int count;
int x[100];
int nomor = 1;



for(int i = 1; i <= file_no; i++){
        sprintf(filename, "map%d.txt", i);
        FILE *test = fopen(filename,"r");
        if(test)
        {
            printf("%2d. Map %d\n", nomor, i);
            x[nomor-1] = i;
            nomor++;
            fclose(test);

        }else if(!test && i > file_no){
            printf("No map available!");
            return 1;
        }

    }

do{
    printf("[0 to cancel] [1 - %d]>> ", nomor-1);
    scanf("%d", &number);
}while(number < 0 || number > file_no);


if(number > 0){
    sprintf(filename,"map%d.txt", x[number-1]);
    printf("%s", filename);
    FILE *open = fopen(filename, "r");
    if(!open){
        printf("error");
    }

    while(!feof){
        fscanf(open, "%[^\n]\n", mapp[count]); 
        count++;
    }
    fclose(open);

    for(int i = 0; i < count ; i++){
    printf("%s\n", mapp[i]);
    }
}

}

1 个答案:

答案 0 :(得分:0)

我创建了一个小测试程序:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void main () {
    char mapp[100][100];
    int i, count = 0;
    char filename[32];

    sprintf(filename, "test.txt");
    FILE *open = fopen(filename, "r");
    if(!open){
        printf("error");
    }

    while(!feof(open)){
        fscanf(open, "%[^\n]\n", mapp[count]); 
        count++;
    }
    fclose(open);

    for(i = 0; i < count ; i++){
        printf("%s\n", mapp[i]);
    }
}

据我所知,关于相关部分的唯一问题是你的while循环条件,你应该使用:while(!feof(open)) - 我测试了我的解决方案,它起作用所以看起来这个是解决方案中唯一的问题