码迷,mamicode.com
首页 > 其他好文 > 详细

scnaf()读入字符串需要注意的地方

时间:2017-10-08 12:07:57      阅读:643      评论:0      收藏:0      [点我收藏+]

标签:.net   字符   getch   gb2312   stream   没有   应该   ddd   运算符   

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
    char ch[1000],cch[1001];
    int a;
    cin>>ch;
    scanf("%d%s",&a,cch);
    printf("%s\n%s",ch,cch);
    return 0;
}

scanf在读入字符串的时候是不加&,因为数组本身就是个地址

char ch[1001]
scanf("%s",ch);

当然如果你是在是不确定输入对不对,你就用cin,虽然慢一点,但是很稳定
cin:运算符>>的作用是跳过空白,读入后面的非空白字符,直到遇到另一个空白字符为止,并在串尾放一个字符\0

所以在使用cin输入一个中间有空格的字符串时,会出现问题。

解决方案:用gets();

一个小scanf的小贴士——来自小爷永远不死的博客

 

1、使用scanf("%c", &a)读取a(a是char类型),如果读取之前有换行符或者空格,那么a就会把之前的换行符或者空格读取到,解决方法就是这之前先getchar()一下。

 

2、而如果用scanf("%s", str)读取str(我发现str是char或者char[]都是可以的),不会读取前边的换行符或者空格。

 

3、其他数值类类型是没有这样的问题的。

 

4、二维char数组不能用scanf("%s", str[i][j]),可以用scanf("%s", str[i])或者scanf("%c",&str[i][j]),前者速度更快,现在想了想应该是数组名可以表示数组首地址的原因。(3/6/2014 补)

 

scnaf()读入字符串需要注意的地方

标签:.net   字符   getch   gb2312   stream   没有   应该   ddd   运算符   

原文地址:http://www.cnblogs.com/ZDHYXZ/p/7636782.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!