用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函数)

#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

也就是说,当你执行过iconv以后,*outbuf所指向的内存空间位置已经被改掉了, 所以你任何时候去读*outbuf, 都是读不到任何iconv后的数据的(都在*outbuf这个指针前面放着呢)。

所以你应该 预先备份outbuf的数据,

比如 char k[1000]char *outb = k执行完iconv(t,&inb,&inl,&outb,&outl)以后,你去读k数组就可以了。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存