读书人

指针无法赋值的有关问题

发布时间: 2012-02-05 12:07:15 作者: rapoo

指针无法赋值的问题
char * strupper(char *psz)
{
char * ps = psz;
while (*ps != '\0 ')
{
*ps = toupper(*ps);
ps ++;
}
return psz;
}
我就是用了一个 upper的函数,然后传入的*ps = toupper(*ps);这句执行完后不能把纸赋给*ps,请问是啥原因?谢谢。
调用的地方如下:
char * h= "Af ";
char * as= strupper ( h);
我怎么找都觉得没原因。。。


[解决办法]
我用的TC3,也可以正常通过,是不是你的toupper函数有问题?
我的程序如下:

#include <stdio.h>
char toupper(char str)
{
return (str> = 'a '&&str <= 'z ')?str-32:str;
}
char * strupper(char *psz)
{
char * ps = psz;
while (*ps != '\0 ')
{
*ps = toupper(*ps);
ps ++;
}
return psz;
}
void main ()
{
char * h= "jfaoKJA88a ";
char * as=strupper(h);
printf( "%s\n ",as);
}
[解决办法]
程序无问题,在TC和VC下都能通过编译.
#include <stdio.h>
char * strupper(char *psz)
{
char * ps = psz;
while (*ps != '\0 ')
{
*ps = toupper(*ps);
ps ++;
}
return psz;
}

int main(void)
{
char * h= "Af ";
char * as= strupper ( h);
printf( "%s ",as);
return 0;
}

[解决办法]
char *h = "Af ";

老问题了

这里h指向的是不可修改的常量字符串区域
要么用数组
要么new一个

读书人网 >C语言

热点推荐