编程小白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

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