从屏幕读取字符串,并提取其中数字串,再次打印到屏幕或写入一个文件
来源:互联网 发布:oracle数据库最高权限 编辑:程序博客网 时间:2024/06/05 07:05
毕业两年多,几乎天天游弋在代码的海洋中,每天都在跟茫茫的多媒体SDK和开源库打交道,这次去XXXX公司面试中却无法脱机写个简单字符串程序。思路流程虽然清楚(当时只是画了个流程图写了几个伪代码),但实现时发现自己平时很少用这些系统函数,编码时发现对系统函数入口参数,返回参数模棱两可。关键一点还是平时写代码太依赖一linux的系统man命令帮助查找,平时写代码几乎很少人为去记忆这些系统函数入口参数,返回值等。因为这系统函数都是标准的C库函数,linux桌面系统如ubuntu,基本上man一下就懂了,最惨的情况下去查一下C库。这次面试离开电脑,一张纸,一支笔就显得茫然。下文是回家后借助于linux的系统的MAN命令和GCC调试编码实现。以告诫和警示自己。
实现方法1:
/************************************************************ 文件摘要: 本文利用gets 实现从屏幕(标准输入stdin)读取字符,并将其中的数字 字符打印出来或者存在到一个文件中*/#include<stdio.h>#include <stdlib.h> /*************************************************************************** 函数名称:ReadDigit* 功能描述:从屏幕读取字符串,并提取数字,将数字保存起来或打印到屏幕* 输入参数:无* 输出参数: 无* 返 回值:失败:-1; 成功:0?* 修改日期 版本号 修改人 修改内容* -----------------------------------------------* 2014/8/6 V1.0hfl XXXX***************************************************************************/int ReadDigit(void){ int flag = 1;char buf1[1024];char buf2[1024];int i=0,j=0;FILE *fp;fp = fopen("chars2.txt","w");if (fp==NULL){ printf("The file is creat failed\n"); return -1;}gets(buf1);while((buf1[i]!='\0')&&(i<1024)){ if((buf1[i]<='9')&&(buf1[i]>='0')) { buf2[j++]=buf1[i]; if(flag==1) { printf("screen=%d\n",atoi(&buf1[i])); flag=0; } } else { flag=1; } i++;}printf("buf2=%d\n",atoi(buf2));buf1[j]='\0';#if 1if((fwrite(buf2,j,1,fp))!=1){ printf("write is failed \n"); fclose(fp); return -1;}fclose(fp);#endifreturn 0;}/*************************************************************************** 函数名称:main* 功能描述:一个进程的入口* 输入参数:无* 输出参数: 无* 返 回值:无* 修改日期 版本号 修改人 修改内容* -----------------------------------------------* 2014/8/6 V1.0hfl XXXX***************************************************************************/void main(){ int rc = -1; rc = ReadDigit(); if(-1 == rc ) printf("ReadDigit from screen is failed\n");}
调试结果如下:
实现方法2:
/************************************************************ 文件摘要: 本文利用getchar 实现从屏幕(标准输入stdin)读取字符,并将其中的数字 字符打印出来或者存在到一个文件中*/#include<stdio.h>#include <stdlib.h> /*************************************************************************** 函数名称:ReadDigit* 功能描述:从屏幕读取字符串,并提取数字,将数字保存起来或打印到屏幕* 输入参数:无* 输出参数: 无* 返 回值:失败:-1; 成功:0?* 修改日期 版本号 修改人 修改内容* -----------------------------------------------* 2014/8/6 V1.0hfl XXXX***************************************************************************/int ReadDigit(void){ int flag = 1;char buf[1024];int i=0;FILE *fp;fp = fopen("chars.txt","w");if(NULL == fp){ printf("The file is Open fail\n"); return -1; } while(flag != EOF){ flag = getchar(); if( flag == EOF ) { break; } else { if(flag<='9'&&flag >='0') { #if 1 buf[i]=flag; i++; if(1024==i) printf("The buf is full"); #endif } } }printf("buf=%d\n",atoi(buf));buf[i]='\0';#if 1if((fwrite(buf,i,1,fp))!=1){ printf("write is failed \n"); fclose(fp); return -1;}fclose(fp);#endifreturn 0;}/*************************************************************************** 函数名称:main* 功能描述:一个进程的入口* 输入参数:无* 输出参数: 无* 返 回值:无* 修改日期 版本号 修改人 修改内容* -----------------------------------------------* 2014/8/6 V1.0hfl XXXX***************************************************************************/void main(){ int rc = -1; rc = ReadDigit(); if(-1 == rc ) printf("ReadDigit from screen is failed\n");}
调试效果
0 0
- 从屏幕读取字符串,并提取其中数字串,再次打印到屏幕或写入一个文件
- java创建文件,并向文件中写入字符串,读取字符串到屏幕
- 读取文件第k条记录打印到屏幕
- 输入一个字符串,把这个字符串中的每个单词打印出来,即输出到屏幕
- 例子程序1:读取文件内容并打印到屏幕上
- 如何从内核模式设备驱动程序中打开一个文件以及如何读取或写入文件
- 读取从a.txt中读取一个字符串,排序后写入b.txt文件中
- C++ 写入数据到.txt文件 从.txt文件读取数据 string字符串分割
- 沙盒路径、拼接路径、将字符串,二进制Data、照片写入到文件中或读取
- 编写一个程序,从标准输入一行一行地读取文本,并完成如下任务:如果文件中有两行或更多行相邻的文本内容相同,那么就打印其中一行,其余行不打印。
- [Macromedia]从屏幕到打印机: 用 Dreamweaver 制作打印CSS
- C++从文件中查找特定的字符串,并提取该字符串
- 从文件中查找特定的字符串,并提取该字符串
- tee--重定向到文件并打印到屏幕
- 从一个文件读取内容计算出结果,将结果写入到另一个文件中
- 从键盘输入一字符串(以#作为结束),显示在屏幕中并写入ch.txt文件中
- Jsoup学习笔记9:Jsoup 解析saz文件,读取其中的htm文件到字符串,提取字符串中的数据写入csv文件中
- 从键盘输入两个学生数据,写入一个文件中, 再读出这两个学生的数据显示在屏幕上。
- github使用说明
- oracle 存储过程 execute immediate 'create table' 报 insufficient privileges错误解决及用户权限的理解-开发系列(二)
- DB2 RECOVER概述
- poj 1330 Nearest Common Ancestors
- Page Master
- 从屏幕读取字符串,并提取其中数字串,再次打印到屏幕或写入一个文件
- 习题4-8 特别困的学生 UVa12108
- 栈
- 子数组之和的最大值(二维)
- poj 1013
- LDO
- java.lang.NoSuchMethodException: xu.action.product.ProductAction.list()
- POJ 1731 Orders(全排列)
- findViewById中NullPointerException的错误