我的文本文件包含包含键值对的数据
(Ann, 67) (Jhon, 78) (Mason, 89)
(Simon, 34) (Ruko, 23)
每个项目用空格分隔,逗号后面有空格
我想阅读每个元素并通过
打印这些第一项(Ann, 67)
(Jhon, 78)
(Mason, 89)
(Simon, 34)
(Ruko, 23)
我尝试使用
while (fscanf(file, "%s", value) == 1) {
printf(value);
}
但不是用逗号分隔每个值
(Ann,
67)
(Jhon,
78)
(Mason,
89)
我该怎么做
答案 0 :(得分:1)
制作数据文件时,可以使用逗号。这是一个示例:
代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(){
FILE *inFile;
char name[20], str[80], *i;
int age;
inFile = fopen("test.txt", "r");
if (inFile == NULL){
printf("Error opening file");
exit(1);
}
while(fgets(str, 80,inFile) != NULL){
i = strtok(str, ", ");
strcpy(name, i);
puts(name);
i = strtok(NULL, ", ");
age = atoi(i);
printf("%d\n", age);
}
return 0;
}
文字档案
Ann, 67
Jhon, 78
Mason, 89
Simon, 34
Ruko, 23
答案 1 :(得分:1)
正如我在回答中提到的,scanf
family of functions具有简单的模式匹配,可用于读取您的输入:
char text[32];
int value;
while (fscanf(file, " (%32[^,], %d)", text, &value) == 2)
{
printf("Got (%s, %d)\n", text, value);
}
使用的scanf
格式说明:
" "
匹配任何前导空格"("
匹配左括号"%32[^,]"
匹配(最多32个)字符,但逗号","
与逗号匹配"%d"
匹配整数值")"
匹配右括号答案 2 :(得分:0)
而不是使用
while(fscanf...)
您可以尝试以下方式:
while ((line=getline(&line, &len, file)) != -1) {
printf("%s", line);
}