UC编程:字符读取与行读取
字符读取函数的应用
下面的演示程序实现从/etc/passwd文件中提取用户名,打印到屏幕上并保存在copyname.txt文件中
使用的函数是getc()、putc()、putchar()
[c]
#include <stdio.h>
int main()
{
FILE *fpr, *fpw;
int c = 0, f = 0;
/* 以下打开源文件 */
if((fpr = fopen("/etc/passwd", "r")) == NULL)
{
printf("open file /etc/passwd failes.\n");
return;
}
/* 以下打开目标文件*/
if((fpw = fopen("./copyname.txt", "w")) == NULL)
{
printf("open file ./copyname.txt failed.\n");
fclose(fpr);
return;
}
while((c = getc(fpr)) != EOF)
{
/* 字符已经读取到了c */
if(f == 0)
{
if(c != ':')
putchar(putc(c, fpw));
else
f = 1;
}
else if(c == '\n')
{
f = 0;
putchar(putc(c, fpw));
}
}
fclose(fpr);
fclose(fpw);
return 0;
}
[/c]
行读写函数的应用
下面这个演示程序是按行来获取数据的
[c]
#include <stdio.h>
int main()
{
FILE *fpr, *fpw;
char buf[1024], *p1, *p2;
/* 打开源文件 */
if((fpr = fopen("/etc/passwd", "r")) == NULL)
{
printf("open /etc/passwd file failed.\n");
return;
}
/* 打开目标文件 */
if((fpw = fopen("./copynameid.txt", "w")) == NULL)
{
printf("open ./copynameid.txt failed.\n");
fclose(fpr);
return;
}
memset(buf, 0, sizeof(buf));
while(fgets(buf, sizeof(buf), fpr) != NULL)
{
/* p1指向第一个":",p2指向第二个":" */
if((p1 = strstr(buf, ":")) == NULL) break;
if((p2 = strstr(p1+1, ":")) == NULL) break;
p1++; p2++;
/* p1指向第二个域密码字段,p2指向第三个域用户ID字段 */
/* 以下代码移动字符串内容,将ID字段的内容移动到用户名字段后 */
while(*p2 != ':')
{
*p1 = *p2;
p1++; p2++;
}
*p1 = 0;
/* 屏幕输出 */
puts(buf);
/* 文件输出 */
fputs(buf, fpw);
fputs("\n", fpw);
/* 清楚内存 */
memset(buf, 0, sizeof(buf));
}
fclose(fpr);
fclose(fpw);
return 0;
}
[/c]
输出省略。这个程序很有意思的地方是在buf中利用指针直接判断并修改数据
越学越有意思呢
UC编程:字符读取与行读取的更多相关文章
- Java中文本文件的读取(按行读取)
在之前的学习过程中,经常会遇到将文本文件中的数据读取到数组或其他数据结构中.每次遇到,总是在网上搜索代码解决,解决之后并没有总结复习,因此在下一次遇到同样的问题时,又重复之前的过程.这样周而复始,并没 ...
- 关于一些对map和整行读取文件操作
public static void main(String[] args) { Map<String, String> map = new HashMap<String, Stri ...
- C++/Php/Python/Shell 程序按行读取文件或者控制台
写程序经常需要用到从文件或者标准输入中按行读取信息,这里汇总一下.方便使用 1. C++ 读取文件 #include<stdio.h> #include<string.h> i ...
- C++中文件按行读取和逐词读取 backup
http://blog.csdn.net/zhangchao3322218/article/details/7930857 #include <iostream>#include &l ...
- Python跳过第一行读取文件内容
Python编程时,经常需要跳过第一行读取文件内容.比较容易想到是为每行设置一个line_num,然后判断line_num是否为1,如果不等于1,则进行读取操作.相应的Python代码如下: inpu ...
- java按行读取txt并按行写入
IO流想必大家都很熟悉了,本次实现的需求是按行读取文件内容并且按行写入,代码如下: try { String encoding="utf-8"; //设定自己需要的字符编码集 Fi ...
- c++ 按行读取txt文本
CStdioFile 类的声明保存在 afx.h 头文件中. CStdioFile 类继承自 CFile 类, CStdioFile 对象表示一个用运行时的函数 fopen 打开的 c 运行时的流式文 ...
- Java利用内存映射文件实现按行读取文件
我们知道内存映射文件读取是各种读取方式中速度最快的,但是内存映射文件读取的API里没有提供按行读取的方法,需要自己实现.下面就是我利用内存映射文件实现按行读取文件的方法,如有错误之处请指出,或者有更好 ...
- python 按每行读取文件怎么去掉换行符
python按每行读取文件后,会在每行末尾带上换行符,这样非常不方便后续业务处理逻辑,需要去掉每行的换行符,怎么去掉呢?看下面的案例: >>> a = "hello wor ...
随机推荐
- Nginx并发訪问优化
Nginx反向代理并发能力的强弱,直接影响到系统的稳定性.安装Nginx过程,默认配置并不涉及到过多的并发參数,作为产品执行,不得不考虑这些因素.Nginx作为产品执行,官方建议部署到Linux64位 ...
- 兼容的网页宽度margin padding
hack兼容: -moz- /* Firefox 4 */ -webkit- /* Safari 和 Chrome */ -o- /* Opera */ IE6承认*和_和+,不承认!import ...
- [LeetCode] Longest Palindrome Substring 具体分析
Given a string S, find the longest palindromic substring in S. You may assume that the maximum lengt ...
- ER模型
一.什么是ER模型 实体-联系图(Entity-RelationDiagram)用来建立数据模型,在数据库系统概论中属于概念设计阶段,形成一个独立于机器.独立于DBMS的ER图模型.通常将它简称为ER ...
- Bob大叔观OO原则
Bob大叔观OO原则 上篇总结了经典的23种 设计模式,详细的解读后期会陆续的详细揭开.使用设计模式的根本原因就是为了增强代码的复用性和可维护性.而面向对象是实现代码复用的有效途径,所以这里有必要了解 ...
- Android Studio常见报错及处理办法
在Android Studio上点了update,系统自动升级,自动重启Android Studio后,以前的项目Gradle正常编译: Unable to start the daemon proc ...
- cocos2d 消除类游戏简单的算法 (一)
1. 游戏视频演示 2.三消游戏我的理解 上面视频中的游戏.我做了2个星期时间,仅仅能算个简单Demo,还有bug.特效也差点儿没有.感觉三消游戏主要靠磨.越磨越精品. 市场上三消游戏已经超级多了.主 ...
- PL/SQL Developer下设置“长SQL自己主动换行”
***********************************************声明*************************************************** ...
- oracle中execute immediate的使用(select/insert/update/delete)(转)
execute immediate的语法如下: execute immediate 'sql'; execute immediate 'sql_select' into var_1, var_2; e ...
- 【Hibernate步步为营】--复合主键映射具体解释
上篇文章讨论了继承映射,它是对象模型中最主要的特性,对于继承映射它的主要区分是字段类型的不同,所以在生成表结构时须要有新列来标识数据的类型,能够使用<subclass>标签并在标签中加入d ...