編程小白C語言題目練習4

題目要求

若有以下定義和語句:
char  *s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));

則輸出結果是

思路分析 

strcpy是一種C語言的標準庫函數,strcpy把含有'\0'結束符的字符串複製到另一個地址空間,返回值的類型爲char*。

strlen所作的是一個計數器的工作,它從內存的某個位置(可以是字符串開頭,中間某個位置,甚至是某個不確定的內存區域)開始掃描,直到碰到第一個字符串結束符'\0'爲止,然後返回計數器值(長度不包含'\0')。

翻譯文字strcpy(s1,s2)將字符串"1234"全部複製到s1中,將原來的內容覆蓋。s1中的12345分別被1234\0取代。故最終計算得出答案爲4。

注意,如果要用代碼執行,這樣寫是不行的!

char  *s1="12345",*s2="1234";C語言中對於字符指針,這樣賦值是錯誤的,如果定義爲字符數組的話應該這麼寫

char s1[6]={"12345"},s2[5]={"1234"}

代碼演示 

#include <stdio.h>
#include <string.h>
int main()
{
	char s1[6]="12345",s2[5]="1234";
	printf("%d\n",strlen(strcpy(s1,s2)));
	return 0;
}

查看結果

和咱們前面分析的一樣,輸出結果爲 4

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章