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
}//
为省却大家再次为试验准备材料的麻烦,
我把源程序做了简化并
把编译好的程序和做试验的材料放在附件中
----------------解决方案--------------------------------------------------------
主要因为大家看到那些乱码.
----------------解决方案--------------------------------------------------------
乱码?在哪里?
很乱吗?是不是我的程序太不简洁了?
----------------解决方案--------------------------------------------------------
回复 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# 的帖子
哦!谢谢!我明白了!做了几个测试程序,想通了
可还是有一些问题没解决.
这些代码实现的是自动命名功能,其中还包过滤部分及意外部分(已省略)
为了实现它我实现它我查了很多资料,最难的就是过滤了,你看那个?号怎么解决?
文件命名可不能有这个东西啊!
----------------解决方案--------------------------------------------------------