【发布时间】:2014-08-05 15:48:38
【问题描述】:
我有一个程序正在尝试获取包含以下内容的文本文件并将其提供给我的其他程序。
Bruce, Wayne
Bruce, Banner
Princess, Diana
Austin, Powers
这是我的 C 代码。它试图获取文件中的行数,解析逗号分隔的键和值,并将它们全部放在字符串列表中。最后,它试图遍历字符串列表并将它们打印出来。这只是奥斯汀·鲍尔斯一遍又一遍的输出。我不确定问题是我如何将字符串附加到列表中,还是我如何读取它们。
#include<stdio.h>
#include <stdlib.h>
int main(){
char* fileName = "Example.txt";
FILE *fp = fopen(fileName, "r");
char line[512];
char * keyname = (char*)(malloc(sizeof(char)*80));
char * val = (char*)(malloc(sizeof(char)*80));
int i = 0;
int ch, lines;
while(!feof(fp)){
ch = fgetc(fp);
if(ch == '\n'){ //counts how many lines there are
lines++;
}
}
rewind(fp);
char* targets[lines*2];
while (fgets(line, sizeof(line), fp)){
strtok(line,"\n");
sscanf(line, "%[^','], %[^',']%s\n", keyname, val);
targets[i] = keyname;
targets[i+1] = val;
i+=2;
}
int q = 0;
while (q!=i){
printf("%s\n", targets[q]);
q++;
}
return 0;
}
【问题讨论】:
-
你正在使用
lines未初始化 -
@mch,对我来说似乎是一个答案
-
sscanf(line, "%79[^,], %79[^\n]", keyname, val);
标签: c string parsing iteration key-value