关于输入和输出
一、
c语言标准输入输出;
Scanf:
读入数字,字符,字符串;遇到空格和回车符和tab键结束输入;
读入字符串时,遇到空格和回车符和tab键会自动在字符串后面添加’\0’,但是回车,空格和tab键仍会留在输入的缓冲区中;
Printf:
输出数字,字符,字符串;
需要“%”+字符来表示各种字符类型的输入输出;
输入 | 输出 | 输入 | 输出 | |||
Int整数 | %d | %d | 字符串 | %s | %s | |
Long long整数 | %lld | %lld | float浮点数 | %f | %f,%e(科学计数法) | |
Usigned ll | %llu | %llu | double浮点数 | %lf | %f,%e | |
字符 | %c | %c |
二、
Cin:
cin>>变量1>>变量2>>变量3>>.....>>变量n;读入任意类型的输入,计算机自动识别,并在遇到空格或者回车符时结束输入,在输入字符串时也不会读入空格或者回车符;
Cout:
cout<<变量1<<变量2<<......<<<endl;计算机会自动识别要输出的类型,并且自动回车;
!!!但是在使用cin时经常会遇到运行超时的问题,将它改成scanf之后就解决了,这个原因还有待深入了解。
三、
getline:
getline(cin,c);读入一行的所有字符串,包括前面、中间、后面的空格,遇到回车符结束读入,将\n变成’\0’,回车符不会被保留在缓冲区,
四、
gets:
gets(c);读入char型字符串,接受回车键以外的所有字符,包括空格和tab键,
并用’\0’替代 ‘\n’.回车键不会留在输入缓冲区中;
puts:
输出c;
但是在咱们学校的平台上是不允许使用gets函数的(hdu可以用),因为gets函数只有一个指针参数,但不知道究竟要输入多大,所以可能会有一系列问题,所以应该用fgets函数;
fgets:
fgets(c,strlen(c),stdin);从标准输入里读入字符串,注意只会读取strlen(c)-1个,因为最后一个必须为’\0’;
以上是我一个新手常用的输入输出方式,但是,将这些结合起来使用时还会有许许多多要注意的点;
五、
1:scanf()后保留在缓冲区的空格,tab键,回车符;
在这个里面我们是要输入一个int型数n,一个char字符a,但是我们输入n按了回车后,它直接就开始输出了,可是奇怪啊!我们还没有输入a呢,这就是最前面讲的缓冲区了;
当我们输入东西时,我们键盘上敲的都会被放在缓冲区里面,然后文件再从缓冲区读入,
对于scanf,它会一直读入,知道遇到空格,tab键,回车符就不读了,而此时缓冲区里还会剩下空格,tab键,回车符,那么下一个scanf再读字符时,文件会从缓冲区读入那个\n,所以我们还没输入a他就自动输出了;
所以我们这里又可以学到一个新的读入方式:getchar();专门用来“吃掉”空格,tab键,回车符;