c語言中,用了strcmp函式連線兩個字串陣列a b後,還需要手動加個0嗎

時間 2021-10-14 21:55:59

1樓:大聖穿花衣

strcmp是連線兩個字串的函式嗎?明顯不是:

strcmp(比較字串)

相關函式 bcmp,memcmp,strcasecmp,strncasecmp,strcoll

表頭檔案 #include

定義函式 int strcmp(const char *s1,const char *s2);

函式說明 strcmp()用來比較引數s1和s2字串。字串大小的比較是以ascii 碼表上的順序來決定,此順序亦為字元的值。strcmp()首先將s1第乙個字元值減去s2第乙個字元值,若差值為0則再繼續比較下個字元,若差值不為0則將差值返回。

例如字串"ac"和"ba"比較則會返回字元"a"(65)和'b'(98)的差值(-33)。

返回值 若引數s1和s2字串相同則返回0。s1若大於s2則返回大於0的值。s1若小於s2則返回小於0 的值。

範例 #includemain()

執行 strcmp(a,b) : 32strcmp(a,c) :-31strcmp(a,d) : 0

而strcat是連線兩個字串的函式:

strcat(連線兩字串)

相關函式 bcopy,memccpy,memcpy,strcpy,strncpy

表頭檔案 #include

定義函式 char *strcat (char *dest,const char *src);

函式說明 strcat()會將引數src字串拷貝到引數dest所指的字串尾。第乙個引數dest要有足夠的空間來容納要拷貝的字串。

返回值 返回引數dest的字串起始位址

範例 #include main()

執行 before strcat () : string(1)after strcat () : string(1)string(2)

2樓:匿名使用者

不用了strcat把原字串新增到目的字串結尾處(覆蓋dest結尾處的'\0')並新增'\0'。

3樓:匿名使用者

strcat函式自動實現,不需要再手動加'\0'。

4樓:青冥戀雪

如果用陣列來表示字串的話,要人為的加"\0"

c語言問題:不用strcmp函式比較兩個字串的大小

5樓:問明

#include

#define n 80

void cmp(char a[n],char b[n])int i=0;

char *p1=a,*p2=b;

while(*(p1+i)==*(p2+i)&&*(p1+i)!='\0')

i++;

if(*(p1+i)>*(p2+i))

printf("%s>%s\n",p1,p2);

else if(*(p1+i)<*(p2+i))printf("%s<%s\n",p1,p2);

else

printf("%s=%s\n",p1,p2);

int main()

char a[n]=,b[n]=;

char c[n]=,d[n]=;

char e[n]=,f[n]=;

cmp(a,b);

cmp(c,d);

cmp(e,f);

return 0;

執行效果:

6樓:匿名使用者

#include

int main()}

c語言兩個字串比較大小的問題,不使用strcmp函式

7樓:問明

#include

#define n 80

void cmp(char a[n],char b[n])int i=0;

char *p1=a,*p2=b;

while(*(p1+i)==*(p2+i)&&*(p1+i)!='\0')

i++;

if(*(p1+i)>*(p2+i))

printf("%s>%s\n",p1,p2);

else if(*(p1+i)<*(p2+i))printf("%s<%s\n",p1,p2);

else

printf("%s=%s\n",p1,p2);

int main()

char a[n]=,b[n]=;

char c[n]=,d[n]=;

char e[n]=,f[n]=;

cmp(a,b);

cmp(c,d);

cmp(e,f);

return 0;

執行效果:

8樓:

看了也試了、沒什麼問題

不過不用加標頭檔案string.h

while((str1[i]==str2[i])&&(str1[i]!='\0')) i++;

這是說兩個字串從首位字元開始比較、如果相比較的兩個字元相等且第乙個字串沒有到結尾、那麼要比較的字元各向後移動一位、str1[i]!='\0'是判斷字串結束的、當不滿足條件時就會繼續向下執行

s=0;

else

s=str1[i]-str2[i];

如果是由於第乙個字串結束而跳出上面的迴圈、判斷第二個字串是否也結束了、

也就是判斷下是不是兩個字串同時結束、如果是、s=0、不是、s為兩個字元相差的ascii碼

c語言中用scanf函式輸入字串後用strcmp函式比較,出現的小問題,求解

9樓:匿名使用者

那個抄,字串是襲

有結尾符的啊

bai。長du度應該

zhi宣告為3.

int main()

10樓:匿名使用者

字元陣列不能用這bai樣du

的方式賦值,(b="ab")並且字元數zhi組的長dao度版要比,實際長度+1,因為系統會在數權組內部自動加乙個'\0'作為字串的結束標誌,它佔乙個空間,

你如進行賦值的話用

可以用gets和scanf函式。

c語言編寫乙個程式,判別兩字串str1和str2的大小。要求不使用庫函式strcmp.

11樓:匿名使用者

實際上這個題目就是要手動實現strcmp這個函式的功能,在面試中可能會遇到類似的問題(strcpy等)

#include

// 當s1 > s2 的時候,會返回正數// 當s1 < s2 的時候,會返回負數// 當s1 == s2 的時候,會返回 0int mystrcmp(char *s1, char *s2)return *s1 - *s2;

}// 給了乙個測試例子~可以自己寫幾個例子測試一下。

int main()

C語言程式設計strcmp函式的問題

strcmp 函式原型是 int strcmp const char s1,const char s2 如果s1的字串在機器編碼順序中落後於s2,函式返回值是乙個大於0的整數 如果兩個字串相同的話,返回值是0 如果第乙個字串在機器編碼順序中先於第二個字串,返回值是乙個 0的數。看函式的返回值型別是 ...

c語言中函式指標用法,C語言中函式指標用法

函式在記憶體中有一個物理位置,而這個位置是可以賦給一個指標的。一零點函式的地址就是該函式的入口點。因此,函式指標可被用來呼叫一個函式。函式的地址是用不帶任何括號或引數的函式名來得到的。這很類似於陣列地址的得到方法,即,在只有陣列名而無下標是就得到陣列地址。怎樣說明一個函式指標變數呢 為了說明一個變數...

c語言中輸出函式有哪些,C語言中,輸出函式有哪些?

美麗羊光 c語言輸入輸出函式有很多,標準i o函式中包含了如下幾個常用的函式 scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.int scanf const char f...