在C中查找特定模式并读取模式后面的数字

时间:2014-05-27 08:40:51

标签: c

搜索网站但未找到此类问题 我有一个简短的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

3 个答案:

答案 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;
}