C: 如何把不定长度的字符串赋值给变量
程序中需要从CMD界面输入国家名称之类的字符串,这些字符串长度不等。想了第一个方法,用一个长字符串数组,比如:
char name[20];
name[5] = "China";//这个其实是给name的第6个元素赋值;
发现编译不通过。原来这种不是初始化,而是赋值,而对数组这样赋值是不对的。这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值。
如果新建变量并同时初始化(整体赋值)是可以的。比如
char name[20] = "China";
如果一定要采用字符串数组的方法,那得用for语句一个一个元素赋值,很麻烦。
最后找到了解决方法,用字符串指针。字符串指针指向的是CMD输入的字符串的地址。CMD输入字符串时,系统会自动分配地址给字符串。通过字符串指针来访问字符串,就不用担心内存空间这一类问题。例子:
char *ctry_name;
ctry_name = (char *)(malloc(sizeof(char) *20));//需要用malloc开辟内存
scanf("%s", ctry_name);
完美解决问题!
本文版权归作者所有,谢绝转载,违者必究!
浙公网安备 33010602011771号