首页 > 试题广场 >

观察下面程序,程序运行输出的结果是() char str1[

[单选题]
观察下面程序,程序运行输出的结果是()
char str1[10]={'n','o','w'},str2[]="coder",str3[]="abcde";
strcat(str1,str3);
strcpy(str1+strlen(str2),str2);
printf("%d\n",strlen(str1)); 


  • 12

  • 11

  • 10

  • 9
char str1 [10]={'n','o','w'},str2 []="coder",str3 []="abcde"; strcat(str1,str3);    //str1:nowabcde\0\0 strcpy(str1+strlen(str2),str2) ;//str1:nowabcoder printf("%d\n",strlen(str1));  //10
发表于 2022-01-16 08:23:49 回复(2)

  1. char str1[10]={'n','o','w'},str2[]="coder",str3[]="abcde";
  2. strcat(str1,str3);    //str1:nowabcde\0\0
  3. strcpy(str1+strlen(str2),str2) ;//str1:nowabcabcd
  4. printf("%d\n",strlen(str1));  //10

发表于 2022-01-02 16:40:07 回复(2)
发表于 2022-07-13 09:27:21 回复(0)
strcpy(str1+strlen(str2),str2);//首地址加步长,即从str[5]开始粘贴

发表于 2022-03-08 11:24:36 回复(0)
数组长度为10,执行后的结果是nowabcoder没地存\0,直接strlen有可能出问题吧
发表于 2022-11-24 23:35:51 回复(0)
题目不好,实际运行时可能发生地址错误。(AddressSanitizer )
发表于 2022-03-13 03:28:00 回复(0)
烂题一个
发表于 2023-04-27 16:35:15 回复(0)
char str1[10]={'n','o','w'},str2[]="coder",str3[]="abcde";
strcat(str1,str3);    //str1:“nowabcde\0”
strcpy(str1+strlen(str2),str2);  //str1:“nowabcoder\0”
printf("%d\n",strlen(str1)); //10

发表于 2022-08-11 21:09:18 回复(0)
做一个拓展回顾:对于字符串,sizeof()比strlen()要大一,因为前者会计算'\0'
发表于 2022-07-07 11:50:42 回复(0)