繁体   English   中英

C-使用文本文件

[英]C - working with Text Files

基本上,我正在用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,搜索'',如果找到它,则替换\\ n,然后将该行重写到文件中。 这听起来明智,可行吗?

问候,

谢谢!

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM