从文件中读取多个实例

时间:2015-02-26 16:28:56

标签: c file numbers

所以我正在读取格式编号的文件。例如数字1 1 1 2.所以我从这个文件到用户的输出应该是1x3 2x2。

#include<stdio.h>




int main(){

int number;
int times;



FILE* ifp = fopen("counting.txt", "r");
    if (ifp == NULL) {
            printf("Error opening counting.txt\n");
            return 1;

    }

while (fscanf(ifp, "%d %d", &number, &times)== 2){
    printf( "%dx%d", number, times);


}

return 0;
}

我遇到的问题是上面的代码编译但是没有返回任何输出

2 个答案:

答案 0 :(得分:0)

while (fscanf(ifp, "%dx%d", &number, &times)==2){
    int looper = 0;
    while(looper < times){
        printf("%d%s", number, " ");
        looper++;
    }
}

答案 1 :(得分:0)

你的代码没有为我编译。

事实上,由于这一行,您的代码无法为任何人编译:

while (fscanf(ifp, "%dx%d" number, times)==2){

number之前应该有一个逗号。我已编辑您的答案以解决问题。但是,会出现其他编译错误。

当代码无法编译时,询问有关代码的问题是不好的,除非您想知道为什么它没有编译。

一旦我修复了代码中的所有其他错误,我就明白了:

#include <stdio.h>

int main(){
    int number;
    int times;

    FILE *ifp = fopen("counting.txt", "r");

    while (fscanf(ifp, "%dx%d", number, times)==2){
        printf("%d",number);
    }

    return 0;
}

请注意,我已将ifp定义置于main()内,因为全局变量形式不佳。我也将File大写,因为这就是它的定义方式。

现在,我在我的编译器上激活警告并运行它:

gcc bob.c  -Wall

这给出了这个:

bob.c: In function ‘main’:
bob.c:9:5: warning: format ‘%d’ expects argument of type ‘int *’, but argument 3 has type ‘int’ [-Wformat=]
     while (fscanf(ifp, "%dx%d", number, times)==2){
     ^
bob.c:9:5: warning: format ‘%d’ expects argument of type ‘int *’, but argument 4 has type ‘int’ [-Wformat=]
bob.c:10:17: error: expected expression before ‘%’ token
         printf( %d);

这使得它的发展非常明显。

我们使用此行解决问题:

while (fscanf(ifp, "%dx%d", &number, &times)==2){

你必须弄清楚如何完成任务。