
您的这个程序,主函数中的第一句话表示p1 和str都是数组名,指向数组中的第一个元素。p2是指针变量,指向的是字符型数据。第二句话表示p2这个指针变量指向的是包含有abc等三个元素的字符型数组。strcpy(str+1,strcat(p1,p2))表示现将p2所指向的内容添加到p1这个数组的结尾处,并且存放在p1中,那么做完之后p1里的内容为abcabc。接下来执行strcpy(str+1,p1)表示把此时p1中的内容拷贝到str中,是从str+1这个位置开始。因为str是数组名,指向的是数组的第一个元素,那么str+1,就是从str数组的第二个元素位置开始,所以最终得到的结果就是aabcabc。
以上就是我对这个问题的回答,希望您能帮助到您。
分类: 电脑/网络 >>程序设计 >>其他编程语言问题描述:
原来的题目是:有一函数,包含N个字符,写一函数,将此字符串从第M个字符开始的全部字符复制成为另一个字符串。我的疑惑写在代码后面。
#include<stdio.h>
void mn(char *p,int n)
{ int i,*q
for(i=0i<n-1i++)
p++
q=p
printf("the new string is:%s\n",q)
}
void main()
{ char *p
int n
printf("erter the string:")
gets(p)
printf("which location to start copy:")
scanf("%d",&n)
mn(p,n)
}
我想在主函数中另外写一个函数老保存第M个字符开始的字符串,并且在主函数中输出这个字符串 应该怎么修改代码?
解析:
按照你的思路改的程序
#include<stdio.h>
char * mn(char *p,int n)
{ int i
char *q
for(i=0i<n-1i++)
p++
q=p
printf("the new string is:%s\n",q)
getch()
}
void main()
{ char *p
int n
printf("erter the string:")
gets(p)
printf("which location to start copy:")
scanf("%d",&n)
printf("the new string is:%s\n",mn(p,n))
getch()
}
解释下我认为你不太明白的地方
第一,如果需要在主函数中输出,那么肯定需要返回值,函数类型就不能是void,
且输出的是字符串,返回的是指针,那么返回类型就是char *型的
第二,返回值是返回给调用处,因此需要把输出放在主函数里,也可以用一个变
量来接受返回值
第三,q是新串的指针,那么就应该是char *类型的
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)