首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C程序: Strcmp

C程序: Strcmp
EN

Stack Overflow用户
提问于 2017-10-20 10:35:59
回答 3查看 157关注 0票数 1

我是个C编程新手。我在试着比较两个字符串。我得到的错误是:这一行有多个标记。传递'strcmp‘的参数1使指针来自整数而不进行强制转换。传递'strcmp‘的参数2使指针来自整型而不进行强制转换

代码语言:javascript
复制
char names[SIZE][LENGTH];   
char srch_name[LENGTH];

if(strcmp(names[g][LENGTH], srch_name[LENGTH]) == 1)
EN

回答 3

Stack Overflow用户

发布于 2017-10-20 10:41:47

直接的问题是,您要将一对char传递给strcmp,而不是char*。这很容易修复-此调用将编译:

代码语言:javascript
复制
strcmp(names[g], srch_name)

然而,第二个问题是您没有检查strcmp中除零以外的特定值:它根据比较结果返回一个小于零、零或大于零的值。

  • <0当两个字符串的内容相同时,第一个不匹配的字符在ptr1中的值小于
  • >0;当第一个不匹配的字符在ptr1中的值大于ptr2

注意:由于C对数组0..长度-1进行了索引,因此在srch_name[LENGTH]中取消引用实际长度的数组几乎总是错误的。当它不是错误的时候,唯一的情况是当您获取一个过去结束元素的地址时。

票数 3
EN

Stack Overflow用户

发布于 2017-10-20 10:40:26

strcmp()的原型是

代码语言:javascript
复制
int strcmp(const char *s1, const char *s2);

但是您给出的两个参数都是char类型,而不是char *类型。

也许你的意思是

代码语言:javascript
复制
if(strcmp(names[g], srch_name) == 1)

如果要检查两个字符串是否相等,请注意,如果两个字符串具有相同的内容,则strcmp()将返回0

票数 2
EN

Stack Overflow用户

发布于 2017-10-20 10:40:24

代码语言:javascript
复制
char names[SIZE][LENGTH];

names是字符数组(char **)的数组。

在该数组中查找项目:

代码语言:javascript
复制
names[g]

因此是一个字符数组(char *)。在其中查找项目:

代码语言:javascript
复制
names[g][LENGTH]

获取一个字符(char)。还有一个超出了数组的界限,因为数组的有效索引只从0LENGTH - 1strcmp需要您传递一个字符数组(char *),而不是单个字符(char)。

解决方案:摆脱第二次查找。

(另外,需要将strcmp的结果与0进行比较,而不是1)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46841595

复制
相关文章

相似问题

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