[英]C program: Strcmp
我是C編程新手。 我正在嘗試比較兩個字符串。 我收到錯誤:此行有多個標記。 傳遞'strcmp'的參數1使指針從整數開始而無需強制轉換。 傳遞'strcmp'的參數2使指針從整數開始而無需強制轉換
char names[SIZE][LENGTH];
char srch_name[LENGTH];
if(strcmp(names[g][LENGTH], srch_name[LENGTH]) == 1)
直接的問題是您要將一對char
傳遞給strcmp
,而不是char*
。 這很容易解決-此調用將編譯:
strcmp(names[g], srch_name)
但是,第二個問題是,您不檢查strcmp
的特定值(零除外):根據比較結果,它返回的值小於零,零或大於零的數。
ptr1
中的值小於ptr2
值時, <0
0
, ptr1
中的值大於在ptr2
值時, >0
注意:由於C對數組0..LENGTH-1進行索引,因此按srch_name[LENGTH]
實際長度解引用數組幾乎總是錯誤。 這不是錯誤的唯一情況是采用單尾元素的地址。
strcmp()
的原型是
int strcmp(const char *s1, const char *s2);
但是您提供的兩個參數都是char
類型,而不是char *
類型。
也許你是說
if(strcmp(names[g], srch_name) == 1)
並且,如果要檢查字符串是否相等,請注意,如果兩個字符串的內容相同,則strcmp()
返回0
。
char names[SIZE][LENGTH];
names
是字符數組( char **
)的數組。
在該數組中查找項目:
names[g]
因此是一個字符數組( char *
)。 在其中查找項目:
names[g][LENGTH]
為您提供一個字符( char
)。 而且這超出了數組的范圍,因為數組的有效索引僅從0
到LENGTH - 1
。 strcmp
需要您傳遞字符數組( char *
),而不是單個字符( char
)。
解決方案:擺脫第二次查找。
(另外, strcmp
的結果需要與0
而不是1
進行比較)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.