char p1[]="abcdefgh",*p=p1; p+=2; printf("%d\n",strlen(strcpy(p,"ABC")));
时间: 2023-08-05 17:07:52 浏览: 251
首先,定义了一个字符数组`p1`,初始化为`"abcdefgh"`,同时定义了一个字符指针`p`,将其初始化为指向`p1`的首地址,即`'a'`的地址。
然后,`p+=2;`将指针`p`向后移动了2个字节,指向了`'c'`的地址。
接着,`strcpy(p,"ABC")`将字符串`"ABC"`复制到以`p`为起始地址的字符数组中,即将`"C"`、`"D"`、`"E"`三个字符分别存储在了`p[0]`、`p[1]`、`p[2]`的位置,同时在`p[3]`的位置添加了字符串结束符`\0`。此时,`p`指向的字符串为`"CDE\0defgh"`,其长度为3。
最后,`strlen`函数计算该字符串的长度,结果为3,将其打印输出。因此,程序的输出为`3`。
相关问题
下面程序段char p1[]="abcdefgh",*p=p1; p+=2; printf("%d\n",strlen(strcpy(p,"ABC")));的运行结果是( )。
程序先定义了一个字符数组 `p1`,并且定义了一个指针变量 `p` 指向该数组的首地址。然后执行 `p+=2;`,使指针 `p` 向后偏移了2个字符的长度,指向了字符 'c' 所在的位置。接着,执行了 `strcpy(p, "ABC")`,将字符串 "ABC" 复制到了指针 `p` 所指向的位置,也就是字符数组 `p1` 中的第3个元素 'c' 开始的位置。此时,字符数组 `p1` 的内容变为了 "abcABCefgh"。最后,执行了 `strlen` 函数,计算从字符串 "ABC" 开始到该字符串结尾的长度,结果为3。因此,程序输出的结果是3。
#include <stdio.h> #include <string.h> char *ss(char *s) { char *p,t; p=s+1;t=*s; while(*p) {*(p-1)=*p;p++;} *(p-1)=t; return s; } int main() { char *p,str[10]="abcdefgh"; p=ss(str); printf("%s\n",p); return 0;} 程序运行后的输出结果是__________。
程序的输出结果是 "bcdefgha"。
程序中定义了一个函数 `ss`,它的作用是将字符串的第一个字符移到字符串的最后,然后返回字符串的首地址。在 `main` 函数中调用了 `ss` 函数,将一个字符串 "abcdefgh" 传入,然后将函数返回值赋值给指针变量 `p`,最后通过 `printf` 函数输出字符串。因此,程序的输出结果是字符串 "bcdefgha"。
阅读全文