C - 使用文本文件

时间:2011-12-27 18:27:15

标签: c io fgets argv

基本上,我正在研究C中的一个小程序(再次,不是作业任务,只是在我离开Uni时的一些实验:))。我的目标是获取一个包含大量单词的文件,所有单词都用空格分隔,循环遍历文件,每当找到空格时,将其替换为\ n,从而创建一个大的单词列表。

#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#include <string.h>
/*
 * 
*/
int main(int argc, char** argv) {

char myFile[100];
int i;
FILE *file;
while(argc--) {
    printf("%s\n", *argv++);
}

return 0;
}

到目前为止我已经非常基本了,我接下来需要做的就是在myFile数组中进行争论和打击,以便我可以将其用作fopen,或者可能还有另一种方法可以做到这一点?

除此之外,我的想法是读取一行,通过fgets读入数组,通过char循环查找char,搜索'',如果找到它,则替换为\ n,然后将该行重写为文件。这听起来合情合理吗?

此致

谢谢!

2 个答案:

答案 0 :(得分:3)

最简单的方法是以二进制模式打开文件

FILE *fpIn = fopen( argv[1], "rb" );

然后打开一个新文件进行编写

FILE* fpOut =  fopen( "tmp.out", "wb" );

使用fgetc从fpIn逐字节读取并使用fputc写入新文件

在写入之前检查字节是否为空格(使用isspace()),改写'\ n'。

然后删除原始文件并将tmp.out重命名为argv[1]

答案 1 :(得分:0)

这正是K&amp; R练习1-12要求你做的事情(你可以交替地将输入文件重定向到标准输入,如果你想跳过文件指针)。这是一个很好的练习。

仅供参考,K&amp; R解决方案的良好资源: http://clc-wiki.net/wiki/K&R2_solutions