gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 08:24:26 24 4
gpt4 key购买 nike

我正在尝试创建一个从 .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")

最佳答案

以下是我对您的代码所做的一些修复:

  • 我将 strcmp() 检查放在循环内,以便检查从 strtok() 提取的所有字符串片段是否与 相等” A”.

    分隔符前的第一个字符串被提取到buffer,然后继续从buffer中提取,直到do-中的NULL while 循环。

  • 由于您的 ini 文件的值具有逗号后空格的这种格式 (", "),我将分隔符从 ","更改为", " (在逗号后添加空格)

    尽管它不会对检查与 "A" 的相等性产生太大影响,因为 A 不会受到影响 (因为它在第一个part of the value A, H, D, F), 检查逗号和空格之间的字母值(例如H, D, F) 如果我们使用 "," 将受到影响 (仅逗号)作为分隔符。

修改代码

 #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, ", ") );
}

输出

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

关于c - 如何在if语句中使用strcmp进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31423838/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com