如何在if语句中使用strcmp进行比较

时间:2015-07-15 07:17:36

标签: c configuration strcmp

我正在尝试创建一个从.ini文件中读取数据的C程序。数据被读入名为buffer的变量中。 .ini文件中的数据如下所示:

 [key]
 title= A, H, D, F 

我的程序如下:

 LPCSTR ini = "C:\\conf.ini";
 char var[100];
 GetPrivateProfileString("key", "title", 0, var, 100, ini);
 char* buffer = strtok(var, ",");
 printf("The complete line is %s", var);

 buffer=strtok(NULL, ",");
 printf(buffer);

 while((buffer= strtok(NULL, ","))!=NULL)
     printf(buffer);

输出看起来像这样:

The complete line is A, H, D, F
A
H
D
F

现在我要做的就是将'缓冲区'中收到的每个字母与字符'A'进行比较,如果是真,则打印是,否则打印否。我尝试使用strcmp进行比较,但.exe文件已停止运行

if (strcmp(buffer, "A")==0)
    printf("Hello")

1 个答案:

答案 0 :(得分:1)

从您的输入格式开始,存在空格,您不会将其视为分隔符的prt。因此,预期这些空格将出现在指向bu '10.07AM' 的字符串中。你可以做到

  • 将分隔符更改为buffer
  • 撰写" ,"等等。

那就是说,

  1. if (strcmp(buffer, " A")==0)是一种糟糕的风格。使用printf(buffer); ot更喜欢puts(buffer)
  2. 在使用返回的指针之前检查printf("%s", buffer)的{​​{1}}返回值。