第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

用strcmp函數(shù)比較兩個(gè)字符串,結(jié)果不正確啊?

用strcmp函數(shù)比較兩個(gè)字符串,結(jié)果不正確啊?

C
子衿沉夜 2019-03-08 11:07:52
#include <stdio.h>#include <string.h>main(){ char a[]={'a','b','c'}; char b[]={'a','b','c'}; int c=strcmp(a,b); printf("%d\n",c); getch();}兩個(gè)字符串?dāng)?shù)組完全一樣,按照strcmp函數(shù)應(yīng)該輸出0但是輸出-1,用wintc編譯輸出-47,得不到正確結(jié)果。發(fā)現(xiàn)string.h中的函數(shù)不太靠譜啊,以前用過(guò)其中的isapha、isdigit等函數(shù)統(tǒng)計(jì)各種字符,發(fā)現(xiàn)函數(shù)的返回值根本不像描述的那樣。
查看完整描述

3 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

strcmp的實(shí)現(xiàn)是這樣的,對(duì)兩個(gè)字符串,先比較第一個(gè)字符,如果不相等,返回差值。如果相等,繼續(xù)比較下一個(gè)字符,直到有不相等或遇到‘\0’時(shí)結(jié)束。

現(xiàn)在你把數(shù)組a和b傳入,因?yàn)榍叭齻€(gè)字符都相等,會(huì)越界繼續(xù)比較的。

如果你想比較兩個(gè)字符串,字符串是要用‘\0’結(jié)束的。
如果你只想比較前n個(gè),可以使用strncmp,strncmp(a,b,3);

查看完整回答
反對(duì) 回復(fù) 2019-03-22
?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊

你這是在比較字符數(shù)組了吧 不是在比較字符串了
char a[] = "abc";
char b[] = "abc";應(yīng)該這么定義
你之前定義的是
char a[]={'a','b','c'}; //char a[3] 是可以的 a[2] = 'c'
char b[]={'a','b','c'};// char a[4]也是可以的 a[3] = '\0'
不一樣的

查看完整回答
反對(duì) 回復(fù) 2019-03-22
?
森欄

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個(gè)贊

你可以把字符串的初始化改成這樣:
char a[]="abc";
char b[]="abc";
那個(gè)getch();可以不要

查看完整回答
反對(duì) 回復(fù) 2019-03-22
  • 3 回答
  • 0 關(guān)注
  • 738 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)