文章目录
一.scanf函数输入字符和字符串
- scanf输入单个字符:
char letter;
scanf("%c",&letter);
- scanf输入字符串:
给数值型数组赋值时,只能用for循环一个一个的赋值,但是字符数组赋值时可以直接赋值,不需要使用循环,系统会在最后添加结束标志符‘\0’.
char a[30];
scanf("%s",a); //可以有&也可以没有&
- 注意 如果输入的字符串中带空格,系统将空格作为输入字符串之间的分隔符,只要遇到空格,系统就会认为当前的字符串已经结束
#include<stdio.h>
int main (void) {
char str1[30];
scanf("%s", str1);
printf("%s\n", str1);
return 0;
}
输入:hello world
输出:hello
- 解决办法:
#include<stdio.h>
int main (void) {
char str1[30], str2[30];
scanf("%s%s",str1, str2);
printf("%s %s\n", str1, str2);
return 0;
}
输入:hello world
输出:hello world
二.字符串数组+初始化
char s1[] = "array";
char s2[6] = "array"; //数组长度,末尾会自动添‘0’
printf("%s %c",s1,s2[2]); //输出 array,r
三.getchar输入单个字符
- 相当于
scanf("%c",c)
,scanf的简化版本
getchar()用于读取用户从键盘输入的单个字符,它有一个整型的返回值,当读取错误的时候,返回-1,当读取正确的时候,它会返回用户从键盘输的第一个字符的ASCII码。并且存在缓冲区。
#include<stdio.h>
int main() {
char c;
c = getchar();
printf("%c\n",c);
return 0;
}
- getche()没有缓冲区,不用按下回车,输入一个字符就会立即读取
#include<stdio.h>
#include<conin.h>
int main() {
char c = getche();
printf("c:%c\n",c);
return 0;
}
示例:Ac:A
getche()位于<conin.h>头文件中,只能在windows下使用。
- getch()也没有缓冲区,不用按下回车,输入一个字符就会立即读取,但是它没有回显。比如输入密码的时候。
#include<stdio.h>
#include<conin.h>
int main() {
char c = getch();
printf("c:%c\n",c);
return 0;
}
输入A后,会立即读取,由于没有回显,所以直接输出内容为c:A
同样,getch()位于<conin.h>头文件中,只能在windows下使用。
四.gets()输入字符串
#include<stdio.h>
int main() {
char str[30];
gets(str);
printf("%s\n",str);
return 0;
}
示例:
we like hoilday
we like hoilday
get()和scanf的主要区别是:
get()认为空格也是字符串的一部分,只有遇见回车才认为字符串输入结束。所以,get()能读取带有空格的字符串,但是scanf()不能。
五.putchar输出字符
putchar()其输出可以是一个字符(用单引号引起来的),可以是0-127之间的一个整型数,也可以是char定义好的一个字符型常量。注意:当c为一个介于0~127(包括0及127)之间的十进制整型数时,它会被视为对应字符的ASCII代码,输出该ASCII代码对应的字符。
该函数以无符号 char 强制转换为 int 的形式返回写入的字符。
(1)当输出正确的时候,返回输出字符转换为的unsigned int 值;
(2)当输出错误的时候,返回 EOF(End of file)文件结束符
示例:
#include<stdio.h>
int main() {
char a, b, c;
a = 'P'; b = 'W'; c = 'T';
putchar(a);putchar(b);putchar(c);putchar('\n');
putchar(a);putchar('\n');
putchar(b);putchar('\n');
putchar(c);putchar('\n');
return 0;
}
输出:
PWT
P
W
T
六 .puts()输出字符串
puts函数只能用来输出字符串,没有格式控制,里面可以是字符串变量(字符串数组名或字符串指针),运行更快。
相当于printf("%s\n",s)
;
#include<stdio.h>
int main(void)
{
puts("Hello world"); //字符串,最后隐含带有'\0'字符
}
输出:Hello world
七.printf()输出字符串
printf输出格式有很多,不单单是字符串,这里主要讲字符串。
#include<stdio.h>
int main(void)
{
printf("hello world") ;
return 0;
}
输出:hello world