我是个C编程新手。我在试着比较两个字符串。我得到的错误是:这一行有多个标记。传递'strcmp‘的参数1使指针来自整数而不进行强制转换。传递'strcmp‘的参数2使指针来自整型而不进行强制转换
char names[SIZE][LENGTH];
char srch_name[LENGTH];
if(strcmp(names[g][LENGTH], srch_name[LENGTH]) == 1)发布于 2017-10-20 10:41:47
直接的问题是,您要将一对char传递给strcmp,而不是char*。这很容易修复-此调用将编译:
strcmp(names[g], srch_name)然而,第二个问题是您没有检查strcmp中除零以外的特定值:它根据比较结果返回一个小于零、零或大于零的值。
<0当两个字符串的内容相同时,第一个不匹配的字符在ptr1中的值小于>0;当第一个不匹配的字符在ptr1中的值大于ptr2时
注意:由于C对数组0..长度-1进行了索引,因此在srch_name[LENGTH]中取消引用实际长度的数组几乎总是错误的。当它不是错误的时候,唯一的情况是当您获取一个过去结束元素的地址时。
发布于 2017-10-20 10:40:26
strcmp()的原型是
int strcmp(const char *s1, const char *s2);但是您给出的两个参数都是char类型,而不是char *类型。
也许你的意思是
if(strcmp(names[g], srch_name) == 1)如果要检查两个字符串是否相等,请注意,如果两个字符串具有相同的内容,则strcmp()将返回0。
发布于 2017-10-20 10:40:24
char names[SIZE][LENGTH];names是字符数组(char **)的数组。
在该数组中查找项目:
names[g]因此是一个字符数组(char *)。在其中查找项目:
names[g][LENGTH]获取一个字符(char)。还有一个超出了数组的界限,因为数组的有效索引只从0到LENGTH - 1。strcmp需要您传递一个字符数组(char *),而不是单个字符(char)。
解决方案:摆脱第二次查找。
(另外,需要将strcmp的结果与0进行比较,而不是1)
https://stackoverflow.com/questions/46841595
复制相似问题