0

基本上,我正在使用 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 将一行读取到一个数组中,逐个字符地循环遍历它,搜索'',如果找到它,则替换为 \n,然后将该行重写到文件中。这听起来合理、可行吗?

问候,

谢谢!

4

2 回答 2

3

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

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

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

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

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

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

然后删除原始并重命名tmp.outargv[1]

于 2011-12-27T18:31:24.617 回答
0

这几乎正​​是 K&R 练习 1-12 要求您执行的操作(如果您想跳过文件指针,您可以交替地将输入文件重定向到标准输入)。这是一个很好的锻炼。

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

于 2011-12-27T20:44:21.427 回答