請求c語言高手解答,為什麼這種解題方式不對?主要應該是集中在strcmp函式上,跪求解答

2023-01-07 00:50:55 字數 1140 閱讀 5513

1樓:匿名使用者

strcmp是比較兩個字串,所以 strcmp(&s[i],&c)!=0 這樣寫的意思是比較兩個字串

一個字串 是 s[i]的地址開始往後直到一個字串結束符('\0')

一個字串是 c的地址開始往後直到一個字串結束符('\0')

而在你的程式裡這兩個字串顯然是不等的,所以不對

你可以用 strncmp,這樣寫 strncmp(&s[i],&c, 1)!=0, 應該就是對的了

函式名: strncmp

功 能: 串比較

用 法: int strncmp(char *str1, char *str2, int maxlen);

說明:比較字串str1和str2的大小,如果str1小於str2,返回值就<0,反之如果str1大於str2,返回值就》0,如果str1等於str2,返回值就=0,maxlen指的是str1與str2的比較的字元數。此函式功能即比較字串str1和str2的前maxlen個字元

2樓:匿名使用者

strcmp(&s[i],&c)!=0並不是取字串s的第i個字元和字元c比較。

strcmp會將s[i]和c當作字串來比較,而字串是以『\0』結尾得,

所以編譯器會將s[i]及s[i]以後的字元當作一個字串直到遇到'\0',也就是s[i]以後的整個字串。

同理把字元'c'及它之後的字元當做字串(記憶體本身存在的資料),所以他們肯定不等的。

你可以將他們列印出來看下。

3樓:匿名使用者

原因很簡答 ,你看std庫的函式宣告

int strcmp(char *str1, char *str2);

雖然你是想把s串的第i-1個取出來和c比較,但這個函式並不是這樣的,strcmp的把你傳進來的&s[i]當成一個串的指標,然後讀取這個串和第二個串進行比較,舉個例子:

s=「hello」;

strcmp(&s[2],&c),的結果是將"lo"和c比較,因為&s[2]取得的地址相當於指向l的指標,然後從它開始直到遇到』\0『結束,都屬於這個串

4樓:匿名使用者

strcmp 是字串比較

求高手解答c語言問題,求高手解答,C語言問題

當使用者按下某個鍵時,1.鍵盤會檢測到這個動作,並通過鍵盤控制器把掃描碼 scan code 傳送到計算機 鍵盤掃描碼跟具體的硬體有關的,不同廠商對同一個鍵的掃描碼有可能不同。2.計算機接收到掃描碼後,將其交給鍵盤驅動程式 3.鍵盤驅動程式把這個掃描碼轉換為鍵盤虛擬碼 虛擬碼與具體硬體無關,不同廠商...

C語言,問題求高手解答,c語言問題求高手解答

a.abcdefg 笑臉表示解碼錯誤,是windows平臺問題,如果在linux平臺下,輸出就是a c語言問題求高手解答 輸入8 9 不要逗號 輸出8,9 輸入的格式必須要和你程式裡定義的一樣,否則肯定出錯 輸入時應輸入 8 9 而不是 8,9 c語言問題,求高手解答 c語言問題 求高手解答 mud...

我有一道C語言程式設計題,請求高手解答

include void main renshu也就 bai是評du委zhi的人dao 數 main for i 1 i printf d sum 一道大一計算機c語言程式設計題,急需高手解答,謝謝 include stdio.h include math.h void main 一道c語言程式設計...