字符数组

char str[100];
char str[100][100];

头文件一般为:

#include <stdio.h>//c
#include <iostream>//c++
#include <string.h>

c语法输入输出字符串 

1. scanf/printf
char str[100];
int main() {
	scanf("%s", str);
	printf("%s", str);
	return 0;
}

scanf识别空格或者换行符作为字符串结尾,所以不能输出带空格的一串字符,只会输出第一个空格前的字符串,字符串后的换行符或者空格会被存进缓冲区。

下面代码输入为asd\n,输出如下:可见缓冲区里还有一个换行符,如果用完scanf再用gets()记得要先把这个换行符先用getchar()吸收掉。

char str[100];
int main() {
	scanf("%s", str);
	char ch = getchar();
	putchar(ch);
	putchar('1');
	printf("%s", str);
	return 0;
}

2. gets/puts

这个函数由于不安全,在VS2015及以后的IDE中就不存在这个函数,而是用gets_s()函数来代替。

char str[100];
int main() {
	gets_s(str);
	puts(str);
	return 0;
}

输出带空格的一串可以正常输出,识别换行符'\n'结尾。如图:

 gets()作为结尾的换行符会被系统从缓冲区中取出来,然后丢弃,所以缓冲区中不会遗留换行符。之前的scanf使用的时候由于缓冲区里有换行符所以直接被getchar()取得了,这个gets用完后缓冲区里没有遗留,所以会等待输入。

c++语法字符串输入输出

1.cin/cout

遇到第一个空格或换行符结束,缓冲区会保留这个空格或换行符。类似于scanf。可以用string的。

2.cin.get(str,长度)

遇到换行符截至,缓冲区遗留换行符。参数里有长度就可以接收字符串。不能用string的。

 输入后原样输出,包括末尾换行符

3.cin.getline(str,长度)

遇到换行符截至,缓冲区没有遗留换行符。挺好的。不能用string的。

 4.getline

只能和string配合使用。缓冲区无遗留。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐