scanf读取String和char []的区别

发布时间 2023-10-20 10:53:12作者: as阿水

 

首先,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是标准输入流,没有缓存区,需要预先分配空间,而cin是输入流,它使用了缓冲区。如果要使用scanf读入字符串,那就一定要事先为它申请足够的内存空间

 

scanf()读取String和char[]的使用区别:

string a;

a.resize(8);

char b[8];

scanf("%s",&str[0]);

scanf("%s",b);