使用fgetc()和/或read()如何从文件中获取密钥和值? 这是它写在文件中的方式:
<key1,val1><key2,val2><key3,val3>
我需要将每个键和值放在一个新数组中(做链接列表)。
因此,要使用'<'
和'>'
以及','
插入文件,这没问题。问题是如何获得它们?
有什么想法吗?
这就是我所拥有的。
FILE * file;
char* key;
char* value;
int c;//apparently I have to use an int
file=fopen("myfile.txt", "r");
c=fgetc(file);
while(c != EOF)
{
c=fgetc(file);
if(c == '<'){
for(int i=0; c != ','; i++)
{
key[i]=fgetc(file);
}
}
}
直到第一个逗号。现在我缺乏一点算法概念。请帮助。
答案 0 :(得分:2)
是否必须是fgetc并阅读? ..这是一种方法:
while(!feof(your_file_name)){
bzero(line, sizeof(line)); // line is a char array ... make sure its of sufficiently large size
fgets(line,100,your_file_name); // I am reading 100 characters .. you can change that number as per your file accordingly
}
fclose(your_file_name);
sscanf(line,"<%d,%d><%d,%d><%d,%d>",&key1,&val1,&key2,&val2,&key3,&val3); // assuming keys and vals are ints
你在代码中所做的是逐个字符地阅读文件。为什么要经历所有的痛苦?
使用fgets
将一次性读取整个文件...然后知道文件格式sscanf
是从中恢复信息的极其强大的工具
好的,所以你在评论中发表了键和val是字符串..所以将sscanf更改为:
sscanf(line,"<%[^,]%[^>]<%[^,]%[^>]<%[^,]%[^>]",key1,val1,key2,val2,key3,val3);
好的,让我解释一下
在处理sscanf中的字符串时,您必须指定分隔符。
所以这个<%[^,]
告诉sscanf - 从这个<
字符开始读取一个字符串并读取它直到你到达,
字符......