想把一个文件中的空格替换成其它字符并写到新文件中去。结果不成功~~
代码如下:#include <stdio.h>
#define max 60
#define min 3
main()
{
int count;
int i;
char name;
char extname[]="jpg";
FILE *fp;
FILE*fp2;
int c;
int zero='0';
printf("Please input the name of the file");
scanf("%s",name);
printf("\n");
printf("Please input file count");
scanf("%d",&count);
printf("\n");
fp=fopen("dmtmp","wr");
for( i = 0; i < count ; i++){
fprintf(fp,"%s",name);
fprintf(fp,"%3d",i);
fprintf(fp,"%3d",i+1);
fprintf(fp,".%s",extname);
fprintf(fp,"\n");
}
rewind(fp);
fp2=fopen("dmlist","w");
while((c = getc(fp)) != EOF){
if ( c == ' ')
putc('0',fp2);
else
putc(c,fp2);
}
fclose(fp);
fclose(fp2);
}
编译的时候用的gcc,编译没有任何问题。但是结果出来后,dmlist文件却总是空的,而tmp文件则按我预想的写满了内容。我参考了下面这段程序:
#include <stdio.h>
main(int argc, char *argv[])
{
FILE *fp;
void filecopy(FILE * , FILE * );
if ( argc == 1 )
filecopy(stdin,stdout);
else
while ( --argc > 0)
if((fp=fopen(*++argv,"r")) == NULL ){
printf("cat:can'topen %s\n",*argv);
return 1;
}else{
filecopy(fp,stdout);
fclose(fp);
}
return 0;
}
void filecopy(FILE *ifp, FILE *ofp)
{
int c;
while ((c = getc(ifp)) != EOF)
if(c == ' ')
putc('0',ofp);
else
putc(c,ofp);
}
这段程序可以正常工作~~
[ 本帖最后由 tandkzy 于 2007-7-19 11:55 编辑 ] 把这句:
fp=fopen("dmtmp","wr");
改成:
fp=fopen("dmtmp","a+");
问题就解决了! 那个,好像不行啊,兄弟~~~
我试过了,根本什么东西都读不出来,所以后一个文件才什么也写不进去。但是如果把原来的程序拆成两个程序的话,结果就显得相当正常了。
也就是说,第一个程序只管生成dmtmp文件。等它运行完毕之后,第二个程序再处理dmtmp文件,最后生成dmlist文件。如果把这两个处理过程写到一支程式里面,结果会是根本就读不出dmtmp的内容~~~
我不知道这是为什么~~~~ fp=fopen("dmtmp","wr");
这句不对吧。你看看 man fopen 先,只有 r, r+, w, w+, a, a+ 这几种 mode 。你用 "wr" 是想可读可写打开这个文件,其实是只能写。 把这句:
fp=fopen("dmtmp","wr");
改成:
fp=fopen("dmtmp","w+");
也可以。"w+"是可读,可写
"a+"是可读,可写(是追加)都可以写进去 不要这样,与空格为分点,分点重写一次,在过程中加入你的其它字符,可以同时用户多种区分出来,更换更多其它字符,用户if就可以了,\
所以编程,要多的要求,对问题处理的逻辑.而不是用户什么语法,逻辑出来了,语法也定下了.
页:
[1]