c语言之字符输入输出和输入验证

时间:2021-11-23 04:17:31

单字符I/O:getchar()和putchar()

 #include<stdio.h>

 int main(void)
{
char ch;
while ((ch = getchar()) != '#')
putchar(ch);
return ;
}
 #include<stdio.h>

 int main(void)
{
char ch;
while ((ch = getchar()) != EOF) //EOF是代表文件结尾的标志
putchar(ch);
return ;
}

重定向和文件

重定向输入让程序使用文件而不是键盘来输入,重定向输出让程序输出至文件而不是屏幕。

1、重定向输入

假设已经编译了echo_eof.c程序,并把可执行版本放入一个名为echo_eof的文件中。运行该程序,输入可执行文件名:

echo_eof < words

2、 重定向输出

echo_eof > words

3、组合重定向

假设希望制作一份mywords文件的副本,并命令为savewords。只需要输入:

echo_eof<mywords>savewords
echo_eof>mywords<savewords

注意:重定向运算符连接一个可执行程序和一个数据文件;且不能读取多个文件的输入,也不能把输出定向至多个文件。

创建更友好的用户界面

#include<stdio.h>
void display(char cr, int lines, int width); int main(void)
{
int ch;
int rows, cols;
printf("Enter a character and two integers:\n");
while ((ch = getchar()) != '\n')
{
if (scanf_s("%d %d", &rows, &cols) != )
break;
display(ch, rows, cols);
while (getchar() != '\n')
continue;
printf("Enter another character and two integers;\n");
printf("Enter a newline to quit.\n");
}
printf("Bye.\n");
return ;
} void display(char cr, int lines, int width)
{
int row, col;
for (row = ; row <= lines; row++)
{
for (col = ; col <= width; col++)
putchar(cr);
putchar('\n');
}
}

输入由字符组成,但是scanf()函数可以使用说明符把输入转换成相应的类型。

例子

 #include<stdio.h>
char get_choice(void);
void count(void);
char get_first(void);
int get_int(void); int main(void)
{
int choice;
while ((choice = get_choice()) != 'q') {
switch (choice)
{
case 'a':printf("Buy low, sell high.\n");
break;
case 'b':printf("OK");
break;
case 'c':count();
break;
default: printf("Program error!\n");
break;
}
}
return ;
} char get_choice(void)
{
int ch;
printf("Enter the letter of your choice:\n");
printf("a. advice b. state\n");
printf("c. count q. quit\n");
ch = get_first;
while ((ch <'a' || ch>'c') && ch != 'q') {
printf("Please response with a, b, c, or q.\n");
ch = get_first();
}
return ch;
}
char get_first(void)
{
int ch;
ch = getchar();
while (getchar() != '\n')
continue;
return ch;
}
int get_int(void)
{
int input;
char ch;
while (scanf_s("%d", &input)!=) {
while ((ch = getchar()) != '\n')
putchar(ch);
printf(" is not an integer.\nPlease enter an integer value,such as 25.");
}
return input;
}
void count(void)
{
int n, i;
printf("Count how far?Enter an integer:\n");
n = get_int();
for (i = ; i < n; i++)
printf("%d\n", i);
while (getchar() != '\n')
continue;
}