格式 :scanf("<格式化字符串>",<地址表>);
scanf有多种接收类型,%d、%c、%s三种类型,%d是用来输入整形数据的%c是用来输出单个字符的%s是用来输入字符串的,在%c中可以单个输入空格和回车、制表符Tab,而在%s中就不可以,在%s中空格和回车代表字符串结束的标志。
#include
int main()
{
char a, b, c;
scanf("%c%c%c", &a, &b, &c);//%c可以输入空格
printf("%c%c%c",a,b,c);
return 0;
输出结果
———————————————————————————————————————
#include
int main()
{
char s[10];
scanf("%s", &s);//%s以空格为结束标志
printf("%s", s);
return 0;
}
输出结果
(2)printf 格式化输出(和scanf是一样的)
二、getchar和putchar
(1) getchar
格式 :getchar();或ch=getchar;
getchar是用来接收单个字符的,也是可以输入空格和回车、制表符Tab的和scanf("%c",&ch)是相同的
int main()
{
char ch[3];
int i = 0;
for (i = 0; i < 3; i++)
{
ch[i] = getchar();//输入空格
}
for (i = 0; i < 3; i++)
{
putchar(ch[i]);
}
return 0;
}
输出结果
(2)putchar
格式 :putchar(ch);
putchar是用来输出单个字符的,也是可以输出空格和回车、制表符Tab,当ch是整形时,输出的是与其相对应的ASCII码值
#include
int main()
{
int b = 97;
char d = 'a';
putchar(b);
putchar('\n');
putchar(d);
return 0;
}
输出结果
三、gets和puts
(1) gets
格式 :gets(ch);
gets()是用来输入字符串的并且能输入空格,制表符Tab但是不能输入回车,可接受回车键之前输入的所有字符,并用’\0’替代 ‘\n’.回车键不会留在输入缓冲区中
#include
int main()
{
char a[10];
gets(a);//输入空格
puts(a);
return 0;
}
输出结果
(2)puts
格式 puts(ch);
puts()用来输出字符串,并且自动输出换行与printf("\n");是相同的
printf可以格式化字符串,而puts()不行
#include
int main()
{
char a[10] = { "abc" };
char b[10] = { "a"};
char c[10] = { "abc abc" };
puts(a);
puts(b);//输出字符串,空格,自动换行
puts(c);
return 0;
}
scanf和gets缓冲区问题
scanf在输入一段字符串回车后,会将回车保留在缓冲区中
而gets会将’\n’换成’\0’
#include
int main()
{
char s[10];
char a;
scanf("%s", &s);
printf("%s\n", s);
a= getchar();
putchar(a);
return 0;
}
输出结果
箭头的位置就是输出的回车
最后:文章有什么不对的地方或者有什么更好的写法欢迎大家指出来。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)