C语言 新人求助指针问题!
//题目:用指针数组方式定义3个字符串,然后遍历个字符串,把里面的小写字母改 大写,大写字母改小写。
//编译环境:C-Free 5.0
#include<stdio.h>
int main()
{
char *t;
int i;
char *p[3]={"AbcDEfG","hIJKlmN","ZyxWVu"};
for(i=0;i<3;i++)
{
for(t=p[i];*t!='\0';t++)
{
if(*t>='A'&&*t<='Z')
*t=*t+32;
if(*t>='a'&&*t<='z')
*t=*t-32;
}
puts(p[0]);
puts(p[1]);
puts(p[2]);
}
}
一点运行就停止工作了。。找了很久不知道哪错了, 请教各位高手!谢谢! C语言
[解决办法]
改为char p[3][20]={"AbcDEfG","hIJKlmN","ZyxWVu"};即可;
char *p[3]={"AbcDEfG","hIJKlmN","ZyxWVu"};会成为常量指针,其内容不允许被修改。
#include <stdlib.h>
#include<stdio.h>
int main()
{
char *t;
int i;
char p[3][10]={"AbcDEfG","hIJKlmN","ZyxWVu"};
for(i=0;i<3;i++)
{
puts(p[i]);
for(t = p[i];*t !='\0'; t++)
{
if(*t >= 'A' && *t<= 'Z')
{
*t=(*t) +32;
}
else if(*t>= 'a' && *t<='z')
{
*t=(*t) - 32;
}
}
puts(p[i]);
}
return 0;
}