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);

完美解决问题!

posted @ 2020-02-22 16:10  DigitalPower  阅读(1244)  评论(0)    收藏  举报