单字符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;
}

c语言之字符输入输出和输入验证的更多相关文章

  1. C语言中字符数据的输入和输出

    字符的输出 C语言中使用putchar函数来输出字符数据 #include <stdio.h> int main() { char a,b,c,d; //定义字符变量a,b,c,d a = ...

  2. C Primer Plus_第8章_字符输入输出和输入确认_编程练习

    1.题略 #include <stdio.h> int main(void) { ; printf("Please enter text here(end with Ctrl + ...

  3. C学习笔记(八)字符输入输出和输入确认

    缓冲区 缓冲区分为两类:完全缓冲(fully buffered)I/O和行缓冲(line-buffered)I/O.完全缓冲在缓冲区满时被清空(内容被发送至目的地).这种类型常出现在文件输入中.缓冲区 ...

  4. Ubuntu下键盘输入错乱问题,输入双引号输出的是@符号,输入#号输出的是未知语言的字符

    装完搜狗后,键盘开始出现混乱,切换到英文输入法,输入双引号输出的是@符号,输入#号输出的是未知语言的字符. 网上有的说在 system - keyboard - Input Source 下看看是否是 ...

  5. C语言-逃逸字符、类型转换和布尔类型

    C语言-逃逸字符 逃逸字符是用来表达无法印出来的控制字符或者特殊字符,它由一个反斜杠""开头,后面跟上另一个字符,这两个字符合起来,组成一个字符. \b是backspace,在su ...

  6. Struts2入门(四)——数据输入验证

    一.前言 1.1.什么是输入验证?为什么需要输入验证? 在上一篇文章中,我们学习了数据类型转换,我们提到了表示层数据处理的两个方法,也提到了用户输入数据需要进行类型转换才能得到我们想要的数据,那么,我 ...

  7. javascript设计模式实践之策略模式--输入验证

    策略模式中的策略就是一种算法或者业务规则,将这些策略作为函数进行封装,并向外提供统一的调用执行. 先定义一个简单的输入表单: <!DOCTYPE html> <html> &l ...

  8. C语言的字符测试函数

    C语言的字符测试函数 isalnum, isalpha, isdigit, isxdigit, isblank, isspace, isascii, iscntrl, ispunct, isgraph ...

  9. Struts2的输入验证

    一.概述: ① Struts2的输入验证 –基于 XWorkValidation Framework的声明式验证:Struts2提供了一些基于 XWork Validation Framework的内 ...

随机推荐

  1. 以太坊之——golang以太坊接口调用

    Go语言具有简单易学.功能强大,可跨平台编译等众多优势,所以这里选择以Go语言切入以太坊. 开始之前需要以下环境: Ubuntu(这里以ubuntu16.04为例) geth Ubuntu16.04安 ...

  2. Echars鼠标点击事件多次触发

    gChart.on('click', function (params) { if (params.componentSubType == "bar" && par ...

  3. 如何设置可以避免php代码中的中文在浏览器中成为乱码?

    其实很简单,只需要在代码开始的前面加上一条这样的语句就行: //这里面我的浏览器中的字符编码格式为utf-8,所以这里我设置为utf-8,如果你的浏览器中的默认编码不是这个,请选择浏览器默认的编码格式 ...

  4. LeetCode算法题-Best Time to Buy and Sell Stock II

    这是悦乐书的第173次更新,第175篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第32题(顺位题号是122).假设有一个数组,其中第i个元素是第i天给定股票的价格.设计 ...

  5. June 18. 2018, Week 25th. Monday

    Health and cheerfulness naturally beget each other. 安康喜乐,相生相成. From Joseph Addison. Good health is a ...

  6. 【Teradata】设置 QUERY_BAND

    SET QUERY_BAND='jobname=chs_instr;' FOR SESSION;

  7. (转)Spring Boot(十二):Spring Boot 如何测试打包部署

    http://www.ityouknow.com/springboot/2017/05/09/spring-boot-deploy.html 有很多网友会时不时的问我, Spring Boot 项目如 ...

  8. python六十八课——网络编程之UDP协议

    1.1 概述 UDP是无连接通信协议,即在数据传输时,数据的发送端和接收端不建立逻辑连接.简单来说,当一台计算机向另外一台计算机发送数据时,发送端不会确认接收端是否存在,就会发出数据,同样接收端在收到 ...

  9. [matlab] 11.多边形凹凸性检测

    clear all;close all;clc; n=20; p=rand(n,2); p=createSimplyPoly(p); %创建简单多边形 hold on; for i=1:n if i= ...

  10. 【vue】vue +element 实现批量删除

    相关资料:http://blog.csdn.net/eagle_88/article/details/70238836 作者:smile.轉角 QQ:493177502