string s;
scanf("%[^\n]",s);
这样写为什么错?
scanf与string类型不兼容,必须传入char[]
或者改用cin,cout
在上面的代码中,变量s没有分配内存,所以读入会出错。
改为如下代码:
char s[100];
scanf("%[^\n]",s);
这样可以保证读入的字符串有足够的空间存储。
供参考:https://baike.baidu.com/item/string%E7%B1%BB/10192112?fr=aladdin
在C语言中,scanf("%[^\n]", s) 会导致错误,因为scanf函数需要一个指向字符数组的指针作为参数,而不是一个字符串(char *)。需要分配内存给字符数组才可以使用scanf。可以使用以下代码:
char s[100];
scanf("%[^\n]", s);