首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

char *cString 和gets()有关问题

2013-08-09 
char *cString和gets()问题各位大侠问下下面的代码为什么会出现错误?两种方式有什么不同?int main(void){/

char *cString 和gets()问题
各位大侠问下下面的代码为什么会出现错误?两种方式有什么不同?

int main(void)
{
   //char cString[133]= "This is a string";   //正确
   char *cString= "This is a string";         //错误     
   printf("\nInput the string:");
   gets(cString);
  
   return 0;
}


如果使用char cString[133]= "This is a string";则gets(cString);可正常获取字符串。
如果使用char *cString= "This is a string";出错。

ps:用的vs2005 char?*???????gets char?*? gets
[解决办法]
gets是获取键盘输入放到指定的缓冲区地址。指针cString指定的地址是在只读数据区(字符串"This is string"是存放在只读数据区的),所以是没有权限向里面写的;数组cString则是放在堆栈里的,可以读和写。
[解决办法]

char cString[133]= "This is a string";   //正确
//存放在栈区,数组而已,可以读可以写,所以gets获取键盘的输入是可以的


char *cString= "This is a string";         //错误 
//存放在静态区,常量字符串,可以读不可以写,所以gets获取键盘的时候出错

热点排行