数据输出
C语言无I/O语句,I/O操作由函数实现
#include<stdio.h>
putchar(c); //输出字符变量c
格式输出语句:printf
printf(“格式控制传”,输出表);
输入函数
getchar();
scanf(“格式控制串”,地址表);
处理输入函数留下的“垃圾”
#include<stdio.h>
int main()
{
int m = 0;
char ch = '\0';
scanf("%d",&m);
scanf("%c",&ch);
printf("m=%d ch = %c\n",m,ch);
return 0;
}
代码中输入完m回车后会将回车赋值给ch从而跳到输出,而没有等待ch输入。解决方法:
1、用getchar()清除
int m = 0;
char ch = '\0';
scanf("%d",&m);
getchar();
scanf("%c",&ch);
printf("m=%d ch = %c\n",m,ch);
2、用格式串中空格或“%*c”来“吃掉”多余的字符
int m = 0;
char ch = '\0';
scanf("%d",&m);
scanf(" %c",&ch);
//或 scanf("%*c%c",&ch);
printf("m=%d ch = %c\n",m,ch);
字符串输入函数gets(不建议用)
#include<stdio.h>
#define N 15
int main()
{
char s[N] = {0};
printf("输入一个字符串\n");
//输入以回车结束,与scanf不同,不以空格作为结束标志
gets(s);
//输入超过数组长度程序会崩溃
printf("s = %s\n"s);
return 0;
}
字符串输出函数puts(s)遇到’\0’结束,输出完字符串会自动换行
int main()
{
int n,ret = 0;
while(1)
{
printf("输入一个字符串\n");
ret = scanf("%d",&n);
if(ret == 0)//处理非法数据
{
getchar();
continue;
}
printf("n = %d\n",n);
}
return 0;
}