我试图将整数值从文本文件传递给linked list
。
问题是文本文件的结构是列和行。
以下是关于文本文件的示例:
5:0:3
4:1:2
3:1:1
4:2:2
3:3:1
我如何获得这些值?注意到我的程序应该注意:
而不仅仅是EOF
。我写了一个类似的程序,但它不能照顾结肠。它只扫描整数值,直到EOF
。
答案 0 :(得分:3)
您可以将fscanf
用作
fscanf(fp, "%d:%d:%d", &var1, &var2, &var3);
答案 1 :(得分:3)
您可以使用fgets()
读取行,然后使用sscanf()
来解析每一行。如果这些行只包含3个整数,那么可以这样做:
int i, j, k;
char str[256];
FILE *fp = fopen("filename", "r");
if(!fp) {
/* File opening error */
}
while(fgets(str, sizeof str, fp)) {
char *p = strchr(str, '\n');
if (p) *p = 0; // remove the trailing newline, if
if( sscanf(str, "%d:%d:%d", &i, &j, &k) == 3) {
printf("%d %d %d\n", i, j, k);
/* do processing with i, j & k */
}
else {
/* failure */
}
}
答案 2 :(得分:1)
您可以使用getline将整行读作字符串。
然后您可以使用字符串函数find()
来查找:
之后你将保存在字符串中找到的位置:你可以使用atoi()将位于:后面一个位置的字符转换为整数。这适用于前两个数字。
对于最后一个号码,你做同样的事情,而不是:你寻找一个空间。