我对这个解析概念比较陌生。这是一个简单但对我来说却令人费解的例子。
我有一个包含一系列数字和字母的文本文件。文本的每一行都包含三个元素。一个字母、另一个字母和一个数字。将第一个视为源,第二个作为目标,将数字视为大小。读取它们并将它们放入结构体数组中,并能够根据大小排列它们。第一行为“a、b、1”。 “q,s,5”代表第二个,依此类推。最后,以排列好的格式打印它们(根据尺寸)
介意给我一些线索或起点吗? 更新:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main(){
FILE *fp;
fp= fopen("file.txt", "O");
int i;
struct arrangement{
char source;
char dest;
int cost;
};
struct arrangement rng[22];
for(i=0; i<22 ; i++){
fscanf(fp, "%c, %c, %d", rng[i].source, rng[i].dest, rng[i].cost);
printf("%c, %c, %d", rng[i].source, rng[i].dest, rng[i].cost);
}
getch();
return 0;
}
这能够“存储数组中的所有元素吗?我仍然不知道如何根据大小/成本来排列这些元素,而不遗漏源和目标。
最佳答案
fscanf 需要指向变量的指针,而不是变量本身。您的代码可能会导致奇怪的结果,具体取决于编译器(gcc 可能会发出警告/错误)和平台。 如果到达 EOF,您还应该中断循环。然后我可以提供最后使用的条目(可能部分有效,也可能无效,具体取决于输入)。
关于c - 初学者帮助: Parsing in C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29710370/