首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

底下这个文件输出程序怎样改进

2013-06-25 
下面这个文件输出程序怎样改进?下面这个程序我是将书中的程序简单改了一下,我要达到的目的是新建一个文件,

下面这个文件输出程序怎样改进?
下面这个程序我是将书中的程序简单改了一下,我要达到的目的是新建一个文件,并且给文件输入内容,然后输出,再然后将这个文件压缩到原来的三分之一放到一个新文件中输出。但是最后一步似乎没有达到。另外也请帮忙看看在给文件输入内容时程序是否正确,有什么要改进的?

问题一:如书中给eddy.txt文件输入的是"So even Eddy oven ready" ,在被压缩的文件中会输出“Send money”,为什么我的程序没有实现?是因为后缀名改成了“.red”吗?

问题二:我的程序明明用putchar要将eddy.txt在屏幕中输出,为什么没看到输出,只看到输入?在F盘中打开eddy.txt可以看到输进去的内容。

问题二:另外,name数组作为文件名怎样体现存在哪个盘中呢?因为我在f盘中没有看到新建的eddy.red文件。


#include "stdafx.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"

#define LEN 40

int main(void)
{
FILE *in, *out;
int ch, ch1, ch2;
char name[LEN]; 

in = fopen("f:\\eddy.txt", "w");

if(in == NULL)
{
printf("Can not open the file f:\\eddy.txt.\n");
}

ch = getchar();  //向in所指向的文件输入内容。
fprintf(in, "%c", ch);
while(ch != '\n')
{
ch = getchar();
fprintf(in, "%c", ch);
}
 fclose(in);

in = fopen("f:\\eddy.txt", "r");
ch1 = getc(in);                //将in所指向的文件内容输出。
while(ch1 != EOF);
{
putchar(ch1);              //为什么在屏编译通过的黑窗口中没有看到输出?    
ch1 = getc(in);

}

fclose(in);

strncpy(name, "eddy.txt", 4); //把文件名的前4个字符复制到name数组中。
strcat(name, ".red");  //添加后缀名。

out = fopen(name, "w");
if(out == NULL);
{
printf("Can not open the file.\n");
exit(1);
}

ch2 = getc(in);              //将eddy.txt的内容每三个字符复制到eddy.red
while(ch2 != EOF);
{
int i = 0;
if(i%3 == 0)
{
putc(ch, out);
i++;
}

}
fclose(out);

return 0;
}




[解决办法]
第一个,
while(ch1 != EOF);和while(ch2 != EOF);后面的分号应该去掉..
然后把int i = 0;放在while(ch2 != EOF)的上面
文件的后缀名表达不了什么的

第二个,同上

第二个第二个,用f:\\指定盘符,要不然会输出到工作路径,或者是工程文件所在的路径,或者是exe文件所在的路径

热点排行