C语言程序怎么运行出错

来源:百度知道 编辑:UC知道 时间:2024/06/20 21:13:36
#include "stdio.h"
main()
{
char
a[]="hello world",b[20];
int i;
for(i=0;*(a+i)!='\0';i++)
*(b+i)=*(a+i);
*(b+i)='\0';
printf("string a is: %s\n",a);
printf("string b is: ",b);
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]);
printf("\n");
}

#include "stdio.h"
main()
{
char a[]="hello world",b[20];
char *pa,*pb;
int i;
pa=a;pb=b;
for(;*pa!='\o';pa++,pb++)
*pb=*pa;
*pb='\0';
printf("string a is:%s\n",a);
printf("string b is:");
for(i=0;b[i]!='\0';i++)
printf("%c",b[i]);
printf("\n");
}
这两个程序应该运行的结果是一样的,为什么第二个程序运行出错了,能帮忙找一下错到哪了?再帮忙改正,谢谢啦
能不能在回答这一个问题
#include "stdio.h"
#include "

for(;*pa!='\o';pa++,pb++)
'\0'写成'\o'了
name[i]都是字符串指针,
{k=i; //从i开始
for(j=i+1;j<4;j++) //i以后的元素
if(strcmp(name[k],name[j])>0)k=j; //这是找到i之后最大的一个字符串的指针
if(k!=i) //k!=i说明确实存在比name[i]所指向字符串要大的
{temp=name[i];name[i]=name[k];name[k]=temp;}//那么把两个指针交换,即把指向最大字符串的指针放到前面,依次这样的话就把几个字符串从大到小排列了

{temp=name[i];name[i]=name[k];name[k]=temp;}

把指针数组(这里的char *name的元素是初始化时,每一个字符串的首地址)的两个元素进行交换。