返回信息流环境:linux,纯c编程
功能:将字符串转换为全部小写的程序。
1·写成 a[] 就正确,返回结果为abcdef
#include<stdio.h>
#include<string.h>
int main()
{
char a[] ="abcDEF";
int i,n;
n=strlen(a);
for(i=0;i<=n;i++){
a[i]=tolower(a[i]);
}
printf("a=%s\n",a);
}
2·写成 *a 就说段错误! 郁闷了。。。为什么呢??
#include<stdio.h>
#include<string.h>
int main()
{
char *a ="abcDEF";
int i,n;
n=strlen(a);
for(i=0;i<=n;i++){
a[i]=tolower(a[i]);
}
printf("a=%s\n",a);
}
牛人给解释下:)
这是一条镜像帖。来源:北邮人论坛 / soft-design / #21668同步于 2007/10/11
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
*和[ ] 的一字之差,程序就“段错误”,牛人给看看!
roc212
2007/10/11镜像同步10 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
I got it! thanks!! buu~~
【 在 buu 的大作中提到: 】
: *a指向的是常量区的字符串abcDEF,不能通过指针更改值
: 而a[]则是在栈内有空间的数组,所以可以更改
ca ,"断错误"的含义还真丰富。
我平时运行程序经常遇到断错误,根本不知道怎么回事
【 在 buu (真·计忆邮心|魔人布欧) 的大作中提到: 】
: *a指向的是常量区的字符串abcDEF,不能通过指针更改值
: 而a[]则是在栈内有空间的数组,所以可以更改