16、(填空题) 写出下列程序的运行结果 void main() char s1(201="abcd',s2[20]="ABCD"; char *p1=s1.*p2=s2; printf("%s\n",strcat(p1+2,p2+1));
时间: 2024-10-05 20:03:40 浏览: 42
这个 C 语言程序尝试将两个字符串连接在一起,但存在一些问题。首先,`char s1(201="abcd"` 这行有误,应更正为 `char s1[] = "abcd";`。其次,`char *p1 = s1;` 和 `*p2 = s2;` 应该是一个指针赋值操作,而不是把整个数组赋给指针。
正确的代码应该是:
```c
#include <string.h> // 需要包含 string.h 来使用 strcat 函数
void main() {
char s1[] = "abcd";
char s2[] = "ABCD";
char *p1 = s1; // p1 指向 s1 的第一个元素
char *p2 = s2 + 1; // p2 指向 s2 的第二个字符,跳过首字母"A"
printf("%s\n", strcat(p1 + 2, p2)); // 注意这里 p2 直接传入,不需要加 1
}
```
运行结果会输出字符串 "bcdABCD",因为 `strcat(p1 + 2, p2)` 将 s1 中从第三个字符开始(即 "bcd")和 s2 ("CD")拼接在一起。
阅读全文