关于字符串指针的问题(20分)

  • 主题发起人 主题发起人 flydream0428
  • 开始时间 开始时间
F

flydream0428

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了一个程序,测试Builder里面的API函数MessageBox();
其中在单元文件中写了一个函数以便取得MessageBox()的返回值,以便跟踪输出,可是在语法上
看起来没错的程序,却通不过编译,望高手指教。部分程序如下:
char *GetMessageString(int i)
{
char *str;
switch(i)
{
case IDABORT:
str="中断";
break;
case IDCANCEL:
   str="取消";
break;
case IDIGNORE:
   str="忽略";
break;
case IDNO:
   str="否";
break;
case IDYES:
   str="是";
break;
case IDOK:
   str="确定";
break;
case IDRETRY:
   str="重试";
break;
default:
  str="";
break;
}
return(str);
}
//-----------------------------------------------------------------------
出错信息为:Illegal character character(0xa1a1);所有有str="**"的行都有此错误。
 
指针未分配空间??
 
在c++中
字符串使用之前都要先分配空间的
 
是不是用了全角的引号呀(或者空格)呀?
 
有两个问题:
1、str没有被分配内存空间,就算编译过运行时也会出错的。
2、在c中是不能直接把字符赋给一个变量的,要用strcpy,如:strcpy(str,"确定");
 
to chenxz:
这样写是没有错的。 C里面直接写在程序里的字符串都会作为常量处理。用一
个字符指针指向字符常量是没有问题的。在标准C的教材里也经常使用这样的写法。
 
那是在定义的时候是可以的,如:char str[10] = 'aaa';
 
给STR分配一个内存空间,就是用一个NEW操作符什么的。可以试一试。
 
多人接受答案了。
 
后退
顶部