首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在if语句中使用strcmp进行比较

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

Stack Overflow用户
提问于 2015-07-15 07:17:35
回答 2查看 941关注 0票数 0

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

代码语言:javascript
运行
复制
 [key]
 title= A, H, D, F 

我的程序是这样的:

代码语言:javascript
运行
复制
 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);

输出如下所示:

代码语言:javascript
运行
复制
The complete line is A, H, D, F
A
H
D
F

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

代码语言:javascript
运行
复制
if (strcmp(buffer, "A")==0)
    printf("Hello")
EN

Stack Overflow用户

回答已采纳

发布于 2015-07-15 07:39:06

下面是我对您的代码所做的一些修正:

  • 我将strcmp()检查放在循环中,以便检查从strtok()提取的所有字符串是否与"A"相等。 分隔符提取到buffer之前的第一个字符串,然后继续从buffer提取,直到do-while循环中的NULL
  • 由于ini文件的值具有这种空格格式--逗号后(", "),所以我将分隔符从","更改为", " (在逗号后添加空格)。 虽然它不会对检查与"A"是否相等产生太大影响,因为A不会受到影响(因为它位于值A, H, D, F的第一部分),但是如果我们使用"," (仅逗号)作为分隔符,检查逗号和空格之间字母的值(如H__、D__、F__)将受到影响。

修改代码

代码语言:javascript
运行
复制
 #include <stdio.h>
 #include <windows.h>

 int main() {

       LPCSTR ini = "C:\\conf.ini";
       char var[100];
       GetPrivateProfileString("key", "title", NULL, var, sizeof var, ini);
       
       printf("The complete line is %s\n", var);
      
       // first piece of string (letter) before delimiter
       // changed delimiter from "," to ", "
       char* buffer = strtok(var, ", ");
       
       // exits if buffer is NULL
       if ( !buffer )
           return;

       do {  
           // prints the letter
           printf("%s", buffer);
           
           // checking if the extracted piece of code from var is equal with "A",  
           // prints either " Yes" or " No"
           ( !strcmp(buffer, "A") ) ? puts(" Yes") : puts(" No");

       // continues checking until NULL
       } while( buffer = strtok(NULL, ", ") );
 }

输出

代码语言:javascript
运行
复制
The complete line is A, H, D, F
A Yes
H No
D No
F No
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31423838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档