搜索网站但未找到此类问题 我有一个简短的txt文件(Ini) 在它中将有这种模式的配置
blabla= 1111
kaka= 2313
blublu = 1
我编写代码的方式中的问题只有在第一行才能找到模式
我试过这个
int number;
FILE *Config;
char ch_theconfig[1000];
Config = fopen("config.ini","r");
size_t sizeofConfig = fread(ch_theconfig, 1, 1000, Config);
sscan(ch_theconfig,"kaka= %d",&number);
即使在新线之后它又如何看起来? 这是帮助!!
****编辑 如果没有逐行检查,有没有办法在完整文件中找到模式? 或者有没有办法让它成为一个没有origenal文件中的\ n的新字符串?
再次thx
答案 0 :(得分:0)
1.在while循环中使用fscanf(),直到检测到EOF字符。
2.如果您想逐行阅读,请使用此
while ((read = getline(&line, &len, Config)) != -1) {
printf("length %zu :\n", read);
printf("%s", line);
}
PS我还没有声明变量,但它们是自我解释的
3或者按如下方式使用fgets()
while ( fgets ( line, sizeof line, Config ) != NULL ) /* read a line */
{
fputs ( line, stdout ); /* write the line */
}
答案 1 :(得分:0)
换行符也是文件中的一个字符,因此您需要读取并放弃它以继续进行文件中的下一个输入。您可以将其作为字符%c
读入某个变量。
答案 2 :(得分:0)
#include <stdio.h>
#include <string.h>
int main(){
int number;
FILE *Config;
char ch_theconfig[0x1000], *p;
Config = fopen("data.txt","r");
size_t sizeofConfig = fread(ch_theconfig, sizeof ch_theconfig, 1, Config);
if(p=strstr(ch_theconfig, "kaka=")){//"kaka ="?
sscanf(p + 5,"%d", &number);//5 : strlen("kaka="),
printf("kaka=%d\n", number);
}
fclose(Config);
return 0;
}