- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想知道为什么 strcasecmp() 在我第一次使用它时返回 0 而不是第二次。
在这个例子中,我专门将“hello world”输入到标准输入中。不是打印 0 0,而是打印 0 10。我有以下代码。
#include "stdio.h"
#include "string.h"
int main(void) {
char input[1000];
char *a;
fgets(input, 1000, stdin);
a = strtok(input, " ");
printf("%d\n",strcasecmp(a,"hello")); //returns 0
a = strtok(NULL, " ");
printf("%d\n",strcasecmp(a,"world")); //returns 10
return 0;
}
我做错了什么?
最佳答案
你在 hello world
之后输入的换行符是 world
标记的一部分,因为你使用空格作为标记分隔符。
如果您使用 strtok(input, "\n");
而不是 strtok(input, "");
,程序将正常运行。事实上,您可能还想使用制表符作为标记分隔符。
整个程序将是:
#include "stdio.h"
#include "string.h"
int main(void) {
char input[1000];
char *a;
fgets(input, 1000, stdin);
a = strtok(input, " \n\t");
if (a == NULL) return(-1);
printf("%d\n",strcasecmp(a,"hello"));
a = strtok(NULL, " \n\t");
if (a == NULL) return(-1);
printf("%d\n",strcasecmp(a,"world"));
return 0;
}
关于c - strcasecmp 不返回零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36661411/
我在strcasecmp上做了一个sigsegved的小程序,直到我做了这个测试用例才知道为什么: strcasecmp(NULL, "TEST"); 编译时,它给了我以下警告: test.c:9:4
我正在尝试计算动态结构数组中单词出现的次数。但输出与所需的答案不匹配。对代码的任何指导或修改将不胜感激。 void COUNT(struct wordsStruct *allWords, int s
看起来 g_strncasecmp 已被弃用,所以我正在寻找另一个函数来做同样的事情。 最佳答案 来自文档 http://library.gnome.org/devel/glib/stable/gli
我正在尝试构建一个名为 lipiTk 的源代码 我有很多这样的错误: Documents/lipi/lipi/src/reco/shaperec/activedtw/ActiveDTWShapeRec
我想知道为什么 strcasecmp() 在我第一次使用它时返回 0 而不是第二次。 在这个例子中,我专门将“hello world”输入到标准输入中。不是打印 0 0,而是打印 0 10。我有以下代
本文实例分析了php字符串比较函数用法。分享给大家供大家参考,具体如下: 直接比较字符串是否完全一致,可以使用"=="来进行,但是有时候可能需要进行更加复杂的字符串比较,如部分
基本上我有代码: echo strcasecmp('hello', ' ') ? 'true' : 'false'; 我不太明白,我希望这里的结果是假的而不是真的,因为字符串不相等...... 是否有
所以我对 C 和整个字符串操作很陌生,但我似乎无法让 strtok() 工作。似乎每个人都有相同的 strtok 模板: char* tok = strtok(source,delim); do {
我尝试在 Code::Blocks 中使用 MinGW 编译 Assimp,但出现以下错误。 \assimp-3.3.1\assimp-3.3.1\code\StringComparison.h||I
前几天我在 CodeReview 上发了一篇文章。一位回答我问题的人建议我不要使用 strcasecmp(),因为“函数是非标准的 [并且] 这使得 [我的] 代码不可移植。”我是这样使用它的: in
我正在从套接字读取字节并将其复制到字符数组中。 char usrInputStr[256]; if ((rbytes = read(STDIN_FILENO, usrInputStr, 256)) <
我有一些代码在一个函数中大量使用 strcasecmp(参见版本 1)。所以我想知道我是否应该将它更改为大写或小写和 strcmp(如版本 2)以兼容 c 并具有更好的性能,因为我只需要将其转换为大写
我正在尝试将应用程序从cygwin移植到Visual Studio 2008 Express 但我收到此错误: error C3861: 'strcasecmp': identifier not fo
我有以下代码: printf("num: %d\n", strcasecmp(buf, "h\n")); 当我尝试插入不同的字母时,我得到以下结果: a: -7 g: -1 i: 1 j: 2 h:
我是一名优秀的程序员,十分优秀!