所以我正在读取格式编号的文件。例如数字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, ×)== 2){
printf( "%dx%d", number, times);
}
return 0;
}
我遇到的问题是上面的代码编译但是没有返回任何输出
答案 0 :(得分:0)
while (fscanf(ifp, "%dx%d", &number, ×)==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, ×)==2){
你必须弄清楚如何完成任务。