char *str3; //这里你申明了一个野指针而已!没有分配内存空间给它, //没有空间存放你输入的数据的! printf("C or C++?\n"); scanf("%s",str3);
str3是指针变量,不过就占了4个字节的内存,这个变量应该储存一个内存的首地址 楼主设想用scanf函数把字符串存入str,这么看,内存不够吧
改成 char str3[28] = ""; 你这个指针没有 初始化,所以编译会报错。
Quote: 引用 3 楼 u010749411 的回复: str3是指针变量,不过就占了4个字节的内存,这个变量应该储存一个内存的首地址 楼主设想用scanf函数把字符串存入str,这么看,内存不够吧 第二句有问题,“scanf函数把字符串存入str” 当scanf的%s对应的是字符数组名(即数组首元的指针--指针常量)时,是将输入串存入字符数组 当scanf的%s对应的是字符指针变量时,是将输入串存入指针指向的存储区, LZ的问题是指针变量没有初始化----野指针,指向的区域很有可能是不可写的,scanf函数将输入串存入指向的区域可能产生的后果是不确定的
#pragma comment(linker,"/SECTION:.rdata,RW") //加这句可以让常量区可写,后果自负!
Quote: 引用 12 楼 zhao4zhong1 的回复: #pragma comment(linker,"/SECTION:.rdata,RW") //加这句可以让常量区可写,后果自负! 如果是在linux下,该怎么做呢?