当前位置: 代码迷 >> C语言 >> fprintf%c和%s的区别
  详细解决方案

fprintf%c和%s的区别

热度:413   发布时间:2008-01-09 21:32:23.0
fprintf%c和%s的区别
非常不好意思,这个问题我已经发过一次了
但是等了很久没人回复,
而我又很急于解决这个问题
也许是我提问的方法不对
所以再发一次,
如果看过了的请跳过吧
带来的不变之处请大家见谅!
源程序:
#include<stdio.h>
#include<dir.h>
int main()
{
FILE *p,*fp;
char path_in[30]="*.txt",ttt[30]="worktyle\\ttt.txt",bofile[100],buff[100];
int i=0,done=1;
struct ffblk ffblk;
done = findfirst("*.txt",&ffblk,0);
     if(done)
    { printf("can't find source  file in  \n");exit(1);
    }//end if
if((fp=fopen(ffblk.ff_name,"r"))==NULL)
    { fclose(fp);printf("can't open source  file\n");exit(1);
    }//end if

fread(buff,sizeof(char),5,fp);
if((p=fopen(ttt,"w"))==NULL)
            { printf("p is %p\n",p);
            printf("can't create a worktyle\\ttt.txt file\n");fclose(p);getch();exit(1);
                }//end if
sprintf(bofile,"%s%s%s","\\",buff,".txt");  
  for(i=0;i<100;i++)
              {
              
               fprintf(p,"%c\\%dEND\n",bofile[i],bofile[i]);
              } //end for

fprintf(p,"bofile:%sEND\n",bofile);
fclose(fp);fclose(p);
printf("in  worktyle\\ttt.txt file \n");
getch();
return 0;
}// end main

问题:
{如下
为何使用%c格式fprintf(p,"%c\\%dEND\n",bofile[i],bofile[i]);
与使用%s格式会出现不同结果fprintf(p,"bofile:%sEND\n",bofile);
拳56END
绛25END
涵70END
苇50END
画69END

bofile:\如何?txtEND
}//

{如下
fprintf(p,"%c\\%dEND\n",bofile[i],bofile[i]);
使用%s的时候‘ . ’怎么不见了。却变成了?号fprintf(p,"bofile:%sEND\n",bofile);

.\46END
t\116END
x\120END
t\116END

bofile:\如何?txtEND
}//
为省却大家再次为试验准备材料的麻烦,
我把源程序做了简化并
把编译好的程序和做试验的材料放在附件中
搜索更多相关的解决方案: fprintf  done  ffblk  include  

----------------解决方案--------------------------------------------------------
主要因为大家看到那些乱码.
----------------解决方案--------------------------------------------------------
乱码?在哪里?
很乱吗?是不是我的程序太不简洁了?
----------------解决方案--------------------------------------------------------
回复 2# 的帖子
乱码?在哪里?
很乱吗?是不是我的程序太不简洁了?
----------------解决方案--------------------------------------------------------
拳56END
绛25END
涵70END
苇50END
画69END
----------------解决方案--------------------------------------------------------
%c 和 %s 怎么会相同呢。

%c 是字符,%s 是字符串。
字符是一个数值。
字符串是一个指向字符数组的指针,字符串以'\0'结尾('\0' 等同于 0 )
----------------解决方案--------------------------------------------------------
#include <dir.h>   // 这个什么东西

struct ffblk ffblk;  这个又是什么?
----------------解决方案--------------------------------------------------------
回复 7# 的帖子
#include <dir.h>   // 这是个头文件,
在它里面有一个struct ffblk 结构类型,我也不是非常清楚,只会用,
与findfirst()一起用.这个结构中包含文件的信息,如文件名,大小,时间,等,
类似的在typedef.h头文件中也有个diff与指针有关的东西
----------------解决方案--------------------------------------------------------
回复 5# 的帖子
不好意思~~
那是我想测试一下汉字与ascii码有什么样的关系(实际上似乎没关系,听说ascii码只能表示很少的字符,再说ascii码也不可能有码汉字的编),上传的时候没有删去,请原谅,初次发贴没有经验,下次不会发生这种情况了.
至于后面那个end是我自己加上去的确实很多余.!
----------------解决方案--------------------------------------------------------
回复 6# 的帖子
哦!谢谢!我明白了!
做了几个测试程序,想通了
可还是有一些问题没解决.
这些代码实现的是自动命名功能,其中还包过滤部分及意外部分(已省略)
为了实现它我实现它我查了很多资料,最难的就是过滤了,你看那个?号怎么解决?
文件命名可不能有这个东西啊!
----------------解决方案--------------------------------------------------------