C语言:将一已知字符串第n个字符开始的剩余字符复制到另一字符数组中。

正确的C语言编程为
#include <string.h>
main( )
{ int i,n;
char a[]="computer";
char b[10],*p,*q;
p=a;
q=b;
scanf("%d",&n);
if(strlen(a)>=n) p+=n-1; /*指针指向要复制的第一个字符*/
for(;*p!='\0';p++,q++)
*q=*p;
*q='\0'; /*字符串以'\0’结尾*/
printf("String a:%s\n",a);
printf("String b:%s\n",b);
}

我想问一下,最后的
printf("string a is:%s\n",p);
printf("string b is %s\n",q);
中,为什么用的是p和q,指针变量不是a和b么?不应该用a和b么?

你现在是要打印两个字符串的内容,a和b是字符变量,p和q是指针变量,你输出的格式是%s是以字符串的格式输出的所以这时候你要用a和b才行(a和b是数组名),如果你想以p和q输出的话那就要在倒数第三行加上这么几句
p=a;
q=b;
for(;*p!='\0';p++)
printf("string a is :%c",*p);
for(;*q!='\0';q++)
printf("string b is :%c",*q);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-02-17
p=a;
q=b
这边不是进行过赋值了么,他们都是指向同一个地址空间啊,然后他进行了这个操作
if(strlen(a)>=n) p+=n-1;

这个的意思就是说如果你需要截取的字符长度(也就是你输入的n)是小于a的长度的,那么就把p这个指针(此时和a还是指向同一区间)移动至需要开始复制的位置。
然后这个for循环就是逐个把值赋到Q中,最后结束的时候通过
*q='\0';来结束本回答被网友采纳
第2个回答  2013-02-17
p=a;
q=b;
都指向同一个地址空间! 一样的

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网