C语言可以说是我学习的第一门语言,不过似乎也是忘的最多的一门语言,自从因为项目需要重新拾起C语言,我的噩梦就开始了。

依稀记得大二学习数据结构时编程解决“约瑟夫环”、“迷宫”等问题后的骄傲,认为C简直就是天神一般的语言,如此强大,如此让人着迷。后来学了C++,后来开始搞.net,后来自学了CSS和简要的PHP,当C快被我抛弃的时候,由于种种原因,被分到一个新的项目,重新开始做C编程。

继语法树构造完之后自我放假了好久,这两天开工写了一段文件处理的代码,发现以前学习的C语言知识确实完全还给老师了,小崔,我对不起你啊,下面是遭遇问题小结。

1. 字符型转化为整型

如果不是正好用到,我想我永远不会知道居然还有标准库函数可以将字符串转换为任意类型(整型、长整型、浮点型等),我太无知了,我居然只知道强制类型转换,却从来没想过对于字符串要怎样处理,不过还好有人跟我一样不知道,哼哼。

atof():将字符串转换为双精度浮点型值;

atoi():将字符串转换为整型值;

atol():将字符串转换为长整型值;

strtod():将字符串转换为双精度浮点型值,并报告不能被转换的所有剩余数字;

strtol():将字符串转换为长整值,并报告不能被转换的所有剩余数字;

strtoul():将字符串转换为无符号长整型值,并报告不能被转换的所有剩余数字。

用法非常简单,举例说明如下:

#include

#include

void main()

{

char lineno_str[20] = {"123"};

int lineno_int = atoi(lineno_str); //将字符串转化为整型值

printf("lineno_str : %s/n", lineno_str);

printf("lineno_int : %d/n", lineno_int);

}

运行结果如下:

cherry@ubuntu:~$ gcc test.c -o test

cherry@ubuntu:~$ ./test

lineno_str : 123

lineno_int : 123

2. 在文件指定行的末尾添加信息

找到某一行还是很容易的,但是在文件中进行插入比较麻烦,本来以为找到指定行直接在末尾添加就可以了,结果悲剧的发现后面的东西被替换了,惆怅。google了下发现文件的内容在缓冲区中是按字节顺序操作的,所以修改文件内容是顺序操作,在某位置修改时会把原始存放在该位置的内容给替换掉,而不是在文件的当前位置插入你修改的内容。

无奈只好走了一条曲折的路线,逐行读取原文件,如不是待修改行则直接拷贝到新建的一个临时文件,如是待修改行则进行修改后再拷贝过去,然后将原来的文件删除,将临时文件重命名为原来的文件。由于要修改好几行,来来回回反反复复还真是麻烦,谁有更好的方法记得告诉我啊。

由于这段代码比较长,就不贴出来了占篇幅了,只附一段逐行读取文件的吧,虽然这块是从网上找来然后修改的,嘿嘿。

#include

#include

#define LINE 1024

char *ReadData(FILE *fp, char *buf)

{

return fgets(buf, LINE, fp);

}

void main()

{

FILE *fp;

char *buf,*p;

if ((fp=fopen("bpinfo","r"))==NULL)

{

printf("Cannot open file!/n");

exit(0);

}

buf = (char *)malloc(LINE*sizeof(char));

p = ReadData(fp, buf);  //将每行的内容读到buf中

while (p)

{

DoSomething(buf, strlen(buf));  //对该行的任意操作

p = ReadData(fp, buf);  //指针移到下一行

}

fclose(fp);

}

(2010年8月31日)

c语言文件按字节读取整数,C语言逐行读取文件相关推荐

  1. c语言中输入字符转换成整数,c语言数字字符串转换成整数 C语言中如何将数字变成字符串啊?...

    C语言:把数字字符串转换成整型数字不懂时,别乱说:懂得时,别多说:心乱时,慢慢说:没话时,就别说. 运行环境:TC2. 把数字字符串转换成整型数字.比如说小编输入一个数字字符当你年轻时,你以为什么都有 ...

  2. linux while read文件,linux shell脚本用while read逐行读取文本的问题

    问题: 我现在是想用一个脚本获取一定列表服务器的运行时间.首先我建立一个名字为ip.txt的IP列表(一个IP一行),再建好密钥实现不用密码直接登录.然后写脚本如下:#!/bin/bashwhile ...

  3. c语言中的字节和元素,C语言指向数组元素的指针

    指向数组元素的指针和运算法则 所谓指向数组元素的指针,其本质还是变量的指针.因为数组中的每个元素,其实都可以直接看成是一个变量,所以指向数组元素的指针,也就是变量的指针. 指向数组元素的指针不难,但很 ...

  4. c语言8个字节整形数,C语言整型数据分析

    C语言整型数据分析 不同类型的量可以参与运算并相互赋值.其中的类型转换是由编译系统自动完成的.以下是小编为大家搜索整理的C语言整型数据分析,希望能给大家带来帮助!更多精彩内容请及时关注我们应届毕业生考 ...

  5. c语言 8位有符号整数,C语言中什么是一个8位的整数

    匿名用户 1级 2013-08-05 回答 [8位整数] 计算机中存储数据,是以二进制的形式存储(有时也被表示为16进制). 二进制8位 就是 0000 0000 到 1111 1111 (换算成十进 ...

  6. C语言自定义输入10000个整数,C语言

    5. [问题描述] 输入一个以回车结束的字符串(少于80 个字符),将其中的大写字母用下面列出的对应大写字母替换,其余字符不变,输出替换后的字符串? 原字母 对应字母 A → Z B → Y C → ...

  7. c语言位段实现字节异或,C语言-位运算-小结

    一.位运算的概念 各种运算都是以字节作为最基本位进行的很多系统程序中常要求在位(bit)一级进行运算或处理.常见的位运算运算符: & 按位与 | 按位或 ^ 按位异或 ~ 取反 << ...

  8. java 读取txt乱码_java 逐行读取txt文本如何解决中文乱码

    java读取txt文本中如含有中文,可能会出现乱码,解决方案是: 1.要统一编码,java工程的编码,txt文本编码,java工程中的java文本编码都统一为utf-8: 2.利用 InputStre ...

  9. 5种Python逐行读取文件的方式

    在本文中,我们将讨论在Python中逐行读取文件的不同方法. 假设我们在与python脚本相同的目录中有一个data.txt文件.让我们看看如何逐行阅读其内容. 小型文件的解决方案:使用readlin ...

最新文章

  1. 超高损人技巧~~不可不看
  2. 聚焦 | 阿里灵杰AI工程化峰会来了
  3. Eureka-eureka原理分析
  4. C# 2.0 锐利体验
  5. raid -- 分区-- 格式化 --挂载
  6. html边框怎么设置100%宽度,边框100%身高和宽度(HTML 4.01严格)
  7. HDU - 6297 CCPC直播
  8. 为什么要写技术博客?
  9. 话筒在multisim怎么找_基于Multisim软件的调频无线话筒仿真
  10. mysql报表服务器配置_Power Bi报表服务器安装及数据库配置方法
  11. Untiy Shader - Metallic vs Specular Workflow 金属 vs 高光的工作流
  12. Backend For Frontend 实践心得
  13. 幼儿园保育员好吗 就业前景如何
  14. 滤波算法 | 无迹卡尔曼滤波(UKF)算法及其MATLAB实现
  15. 职场:结果导向的前提是过程控制
  16. 我,程序员,告诉你年薪30万的程序员转行后,都去做什么工作了
  17. 手机拍照技巧:全景拍摄,让手机拍出的照片妙趣横生
  18. Oracle之字符串去重统计
  19. 基于SSM搭建的学生信息管理系统项目源码+学习视频
  20. dreamweaver后缀名_在 Dreamweaver 中添加或编辑识别的文件扩展名

热门文章

  1. Transmission 下载完成后自动关机
  2. 基于C语言的G代码解释器,G-Code
  3. 记录《自己动手写网络爬虫 》书中涉及的内容学习一些算法
  4. IEC 60958 IEC 61937
  5. InfoQ:开放物联网大会启动筹备,(前200名)免费报名参与
  6. FP6291芯片输出电压12V,DC-DC升压芯片
  7. 如何使用SPSS Amos进行验证性因子分析(CFA)和Bootstrap检验中介效应
  8. PS学习笔记(完整版)
  9. 2019开年dbaplus北京站沙龙归来
  10. Android基础入门教程——1.6 .9(九妹)图片怎么玩