【发布时间】:2023-03-10 11:42:02
【问题描述】:
所以我有这个输入文件:
1 2 3 4 5 6 7
3 2 4 1 6 5 7
***
1 1 2
1 1 2
***end of input***
我想扫描前两行整数,然后对它们进行一些处理,然后跳过* 并扫描下一行整数,并对它们执行一些操作(就像一个循环,直到它读取* )。
我怎么能这样做?这是我的代码:
int main(){
int i = 0, j ;
int temp[100];
char c, buf[20];
FILE *fp;
fp = fopen("input.txt", "r");
if (fp != NULL){
while (1 == fscanf(fp, "%d ", &temp[i])){
i++;
}
// do something with the integers
}
else{
printf("Cannot open File!\n");
}
return 0;
}
所以问题是,我只能扫描前两行整数。我也想扫描*之后的整数。
【问题讨论】:
-
结尾字符是什么?
-
您遇到的具体问题是什么?
-
听起来您需要(a)在“做某事”行之后添加代码以处理包含星号的行(例如使用
fgets()阅读),然后围绕@ 包裹另一个循环987654327@,'做某事'和'munch stars'代码重复直到EOF。理想情况下,您应该在遇到 EOF 后关闭该文件。删除格式字符串中%d之后的空格也可能是明智的——原因很复杂,但尾随空格尤其会给交互式程序带来讨厌的行为。 -
问题是,我只能扫描前两行整数。我也想扫描 * 之后的下一个整数。 @JonathanLeffler 可以帮助我并为此提供代码吗?一段时间循环
-
是什么阻止了您在当前的 while 循环周围添加外部 while 循环并“做某事”代码来重复操作? “能帮我提供一个代码吗?” -- 那真的不是 SO 的意义所在。