gpt4 book ai didi

C 将标记与字符串进行比较

转载 作者:行者123 更新时间:2023-12-04 02:11:56 25 4
gpt4 key购买 nike

我从一个文件中读取了一个字符串,该文件由两个单词组成,我用 token 将其拆分,并希望将它们与我的输入进行比较。第一个比较工作正常但不是第二个。打印语句打印出同样的东西,但检查失败。我猜这是由于特殊的行尾字符。

if(strcmp(argv[2], token[0]) == 0){
printf("Input1 match\n");
printf("%s\n", argv[3]);
printf("%s\n", token[1]);
if(strcmp(argv[3], token[1]) == 0)
{
printf("Input2 match\n");
}
}

编辑:我的第二个标记中有一个\n 字符,使用此代码修剪字符串修复它

void strip(char *s) {
char *p2 = s;
while(*s != '\0') {
if(*s != '\t' && *s != '\n') {
*p2++ = *s++;
} else {
++s;
}
}
*p2 = '\0';
}

最佳答案

将打印语句更改为:

printf("[%s]\n", argv[3]);
printf("[%s]\n", token[1]);

看看它们是否真的相同。您可能会发现 token 末尾有一个“隐藏”字符,例如 <space>\n .

如果它没有出现,你可以通过一个十六进制转储程序管道输出,如果你有一个可用的(a),比如:

./myprog | od -xcb

然后您可以检查输出中是否有可疑字符。


(a) 如果您使用的是 Windows,gVim 的菜单上有一个“转换为十六进制”,或者您可以安装 CygWin 或 GnuWin32 工具来获得像 od 这样的东西。 .

关于C 将标记与字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16269825/

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