字符串与字符数组的问题

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

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^