c语言字符串输入输出
单个字符和字符数组
c语言字符串定义
字符串以字符数组形式存在,需要包含cstring头文件 ____
char str[30] = {"aaa bbb ccc"};
char str[30] = "aaa bbb ccc";
char str[] = {"aaa bbb ccc"};
char str[] = "aaa bbb ccc"; //这种形式更加简洁,实际开发中常用
//c语言用字符数组表示字符串时不能先定义后赋值,只能在定义的时候初始化
char str[12];
str="aaa bbb ccc" //这是错的
//但是可以先定义再输入 ,下面这个是对的
char str[12];
gets(str); //由输入的字符串长度觉得str的长度
printf("%s",str);
输入单个字符
scanf(“%c”,ch); '\n’会留在缓冲区,回车后可进行下一个输入 __
char a;
int b;
scanf("%c",&a);
scanf("%d",&b);
printf("%c\n",a);
printf("%d",b);
/*
输入: a
1
输出: a
1
*/
输入字符数组(字符串)
1.scanf("%s",s);
'\n’遇到空白字符(包括空格、制表符、换行符)时均会停止输入 _
char str[20];
scanf("%s",&str);
printf("%s",str);
/*
输入:aaa bbb ccc
输出:aaa
*/
- gets(); * gets很多刷题平台上不能使用,比如openjude和PTA上说明了不能使用,但是平时对于输入不确定长度的字符串非常方便*
3.scanf("%[^\n]",sa); 正则表达式帮助输入
char sa[20];
scanf("%[^\n]",sa);
printf("%s",sa);
/*输入aaa bbb ccc
输出aaa bbb ccc*/
输出单个字符
printf("%c",ch);
输出字符数组
1.printf("%s",s);
不能自动换行,只能输出字符数组,不能输出字符串常量 __
2.==puts(); ==
输出字符串并自动换行,该函数只能输出字符串 _ _
c++字符串输入输出
字符串以sting类存在,需要包含string头文件(由于c++是从c语言继承而来的,所有c语言能使用的输入输出和字符串定义规则c++都能用)
输入单个字符
1.cin>>ch;不能读取空格,其余字符均可读入
2.ch=getchar();可读取空格
输入一行常量字符串
1.getline(cin,s);
getline(cin,s,’,’); 指定输入字符串的间隔符号
适用于字符串长度不确定的情况
2.gets(); 不能检查数组是否能装得下输入行
3.fgets(); 用函数代替gets()
输入字符数组
1.cin.getline(char buf[],int bufsize); 自动添加’\0’,回车换行符不会写入buf,但是会从输入流中去掉,在使用cin.getline()时要考虑字符串最后的"\0",所以字符数组的大小总会设置得比我们需要的大一,为避免错误尽量不使用
2.gets(char buf[]);
输出字符串
cout<<str;
由于个人觉得c++的输入输出比c语言的简答一些,所以c++部分的代码就没有写出来了
小白总结,只是为了做笔记,可适当参考,语句的具体使用方法就自己动手查吧
c语言字符串与指针
c语言能直接设置指向字符数组的指针,但是一般不直接用指针进行输入输出,先用一个字符串过渡一下
char sa[20];
scanf("%[^\n]",&sa);
char *str=sa;
printf("%s",str);
很神奇,c语言中能直接用char *指向字符数组表示字符串
char *str="aaa bbb ccc";
printf("%s",str); //整体输出
for(int i=0;i<strlen(str);i++)
printf("%c",str[i]); //一个一个字符地输出
c++字符串与指针
c++中字符串一般用string表示,但是不能使用得像其他基本数据类型一样方便,跟c语言一样不能直接用指针进行输入输出
/*string *sa;
cin>>*sa;
cout<<*sa<<endl;*/ //这是错误的
string str;
getline(cin,str);
string *sa;
sa=&str; //配合引用设置指针
除了不能直接用指针进行输入以外,其他使用方法与其他几种基本数据类型一样