首先,c语言中没有string类型,直接用scanf读入string类型是不正确的。如: string a; scanf("%s",a); // 录入"asd" cout << a; // 输出后a是空 正确方式: string a; a.resize(8); scanf("%s",&a[0]); // 录入"asd" cout << a; // 输出:asd 为什么cin能直接读取String而scanf()不能?因为...
scanf函数可以接收字符串的输入,对应的类型说明符是字符串string的s,因为C语言没有“字符串”(string)这种基本数据类型,所以一般都是用字符数组(或malloc分配的堆内存来接收,不懂也没关系)来存储。一般不能直接用%s,比如面的写法是错误的:char str[5];scanf(“%s”,str);如果持续看我文章的读者,应该...
我们都知道scanf()是可以输入string类型的: 如: #include <stdio.h>#include<string>#include<iostream>usingnamespacestd;intmain() {stringa; a.resize(6);//需要预先分配空间,超出空间会被截取scanf("%s", &a[0]); cout<<a;//用printf("%s",a.c_str())也可以输出return0; } 这种情况是一定不会...
string s;int main(int argc, char* argv[]){ scanf("%s",s.c_str()); //可以输入abcde cout...
无法像直接输入整数那样方便的使用 scanf()函数输入 string变量。原因是,string并非是C的原生类型。但是是可以做到让scanf输入string类型的数据。 不建议使用 scanf 输入string类型字符串。 1.scanf ...
s是string的首字母,表示字符串
关于⽤scanf()输⼊string类型引起的问题 我们都知道scanf()是可以输⼊string类型的:如:#include <stdio.h> #include <string> #include<iostream> using namespace std;int main(){ string a;a.resize(6); //需要预先分配空间,超出空间会被截取 scanf("%s", &a[0]);cout << a;//⽤printf...
scanf("%[^\n]", string); printf("%s\n", string); return 0; } 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 问题二:键盘缓冲区残余信息问题 #include "stdio.h" int main(int argc, char **argv) { int a; char c; ...
scanf是格式化输入函数,从键盘读取输入的信息。s是格式符,表示输入格式为字符串,str是一个字符串指针或数组,用来存放从键盘读入的信息。
String类可以用cin流式读取。在用scanf读取时,必须声明长度。不声明长度,直接scanf会出现运行时错误。include <stdio.h> include <string> using namespace std;int main(){ string a;a.resize(100); //需要预先分配空间 scanf("%s", &a[0]);puts(a.c_str());return 0;} ...