用linux c语言编写 为一个文件里面的内容的每一行添加一个指定的字符

用linux c语言编写 为一个文件里面的内容的每一行添加一个指定的字符,第1张

1、基本思路:从第一个文本文件中用

fgets()

函数读出一行数据,对读出的每一行数据进行判断,如果需要在它的适当位置插入一行,把相应的新内容、以及该行的内容写到第二个文本文件中。如果不需要在该位置插入一行,那就直接将该行数据用

fprintf()

函数写入第二个文本文件中。

2、伪代码:

1.打开要修改的文件A,

2.创建一个临时文件B,

3.

while(没到达文件A末尾)

从A中读取一行,写到B中,然后写入要追加的内容,写入换行符

4.关闭文件A,关闭文件B,

5.删除文件A(用remove函数),重命名B为A(用rename函数)

1、iconv的含义是将一个抽象的符号的编码进行转换。

但是如果一个符号比如“个”,可能在BIG5的编码中不存在(繁体字中不同)

GBK包含的是简体字,BIG5包含的是繁体字,Unicode包含全部,

所以

GBK->Unicode,Big5-Unicode (总是OK)

Unicode->GBK (当里面仅包含英文及简体时OK)

Unicode->BIG5 (当里面仅包含英文及繁体时OK)

GBK->Big5 (基本上不行,除非某些字没有特别的简体字)

GBK->Big5是汉字的简繁转换,不是编码转换,简体字转繁体字还有一个问题,一个简体字可能是对应多个繁体字,这种很难转换正确。繁体字转换成简体字相对难度低。

2、#include <iconv.h>

size_t iconv(iconv_t cd,

char **inbuf, size_t *inbytesleft,

char **outbuf, size_t *outbytesleft)

函数原型, outbuf是一个 char **类型

在函数手册中:

The iconv() function converts one multibyte character at a time, and for each character conversion it increments *inbuf and decrements

*inbytesleft by the number of converted input bytes, it increments *outbuf and decrements *outbytesleft by the number of converted

output bytes

要学会用man,特别是man 2(系统调用)和man 3(C函数库),比如:

man sqrt

会显示需要引用的头文件,编译时需要的动态链接库

如果重复,则需要指定手册章节,比如

man write 显示的是write程序帮助,如果想看系统调用,则要输入man 2 wirte

另外,/lib64:/lib:/usr/lib64:/usr/lib这些是系统缺省的,不用指定


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/6140394.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-03-16
下一篇2023-03-16

发表评论

登录后才能评论

评论列表(0条)

    保存