初学者问一个C语言的问题。

来源:百度知道 编辑:UC知道 时间:2024/06/07 16:29:27
这个程序错在哪里?

#include "stdio.h"
void main()
{
char s[]={"man","woman","girl","boy","sister"};
char *p; int k;
for(k=0;k<5;k++)
{ p=s[k];
printf("%s\n",*p);
}
}

两个错误:
1. 字符串数组为二维数组,需要用char s[][].
2. printf("%s\n",*p)应该为printf("%s\n",p).
修改如下:
#include "stdio.h"
int main()
{
char s[][10]={"man","woman","girl","boy","sister"};//!!!
char *p; int k;
for(k=0;k<5;k++)
{ p=s[k];
printf("%s\n",p);//!!!
}
return 0;
}

*p=s[k];

char s[]是字符数组,它的内容是字符,像你那样以字符串作为数组元素,应该用二维数组。或者改变初始化的形式。

字符数组的初始化

比如char a[]="hello";

或者char a[]={'h','e','l','l','o'};

二维数组的初始化

char s[5][]={"man","woman","girl","boy","sister"};

还有循环那里,p是指针,不能赋值为字符,可以改为p=s+k