
C语言 文件写入 字符数组值 的问题,急问!谢谢
我想将字符数组值写入文件,具体过程为:charout[6];//后续将输入一些数字值,如out[3]=12FILE*pFile;//打开存储的文件pFile=fopen(...
我想将字符数组值写入文件,具体过程为:
char out[6];//后续将输入一些数字值,如out[3]=12
FILE *pFile;
//打开存储的文件
pFile=fopen("数据.txt","w+t");
*****
//想将out[i]写入文件
fwrite(out,sizeof(char),strlen(&out[i]),pFile);
****
fclose(pFile);//关闭数据文件
编译可以通过,但运行至fwrite处就报错,我估计是参数写的有问题的,请高手指教!谢谢,在线等。 展开
char out[6];//后续将输入一些数字值,如out[3]=12
FILE *pFile;
//打开存储的文件
pFile=fopen("数据.txt","w+t");
*****
//想将out[i]写入文件
fwrite(out,sizeof(char),strlen(&out[i]),pFile);
****
fclose(pFile);//关闭数据文件
编译可以通过,但运行至fwrite处就报错,我估计是参数写的有问题的,请高手指教!谢谢,在线等。 展开
1个回答
2013-07-07
展开全部
看来作者要加强概念的理解。
照你的意思,out[6]是一个字符串,那么它的每一个成员只能表示一个字符,即out[3]只能表示一个字符,怎么可能是out[3]=12?"12"是2个字符嘛。或者说"12"是个字符串,怎么能赋值给单个字符变量out[3]?
解决这个问题有2种方法:
1 直接用int整数表示即:int out[6];
这样out[3]=12就合情合理了。
2 如果你一定要用字符表示数字,可以使用2维字符数组定义即:char out[][6];这样out[3]就可以表示长度不超过6-1=5个数字形式的字符串了(c/c++规定字符串最后一个结尾字符为'\\0')。要表示字符串out[3]中的某个字符,可以用
for(i=0;i<5;i++) out[3][i];
注意:
pFile=fopen("数据.txt","w+t"); --->pFile=fopen("数据.txt","wt+");
同时对文件的读写如果不是对结构体类型的成块数据最好不要使用函数fwrite()和fread();因为有时候会产生乱码。你可以使用结构化输入输出函数fscanf()和fprintf();无论是按文本文件还是二进制文件读写都不会产生乱码。
如果你的是int out[6];写入文件格式如下:
for(i=0;i<6;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%d",out[i]);/*注意这里是%d,和上面定义的类型一致*/
如果你的是char out[][6];写入文件格式如下:
for(i=0;i<字符串的个数;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%s\
",out[i]);/*注意这里是%s,和上面定义的类型一致*/
如还有疑问再说明。
如果上面是printf("%d ", out[i]); 说明out[i]是整型数组
冒险岛乐乐
18:23:14
那么fprintf(pFile,"%s\
",out[i]); 必须改为fprintf(pFile,"%d\
",out[i]);
冒险岛乐乐
18:23:30
数据类型要一致嘛
冒险岛乐乐
18:25:27
回答中我说了哦:如果你的是int out[6];写入文件格式如下:
for(i=0;i<6;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%d",out[i]);
冒险岛乐乐
18:26:10
如果你的是char out[][6];写入文件格式如下:
for(i=0;i<字符串的个数;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%s\
",out[i]);
冒险岛乐乐
18:27:42
一个是%d一个是%s分别对应定义时的int out[6]和char out[][6],就这么回事。
照你的意思,out[6]是一个字符串,那么它的每一个成员只能表示一个字符,即out[3]只能表示一个字符,怎么可能是out[3]=12?"12"是2个字符嘛。或者说"12"是个字符串,怎么能赋值给单个字符变量out[3]?
解决这个问题有2种方法:
1 直接用int整数表示即:int out[6];
这样out[3]=12就合情合理了。
2 如果你一定要用字符表示数字,可以使用2维字符数组定义即:char out[][6];这样out[3]就可以表示长度不超过6-1=5个数字形式的字符串了(c/c++规定字符串最后一个结尾字符为'\\0')。要表示字符串out[3]中的某个字符,可以用
for(i=0;i<5;i++) out[3][i];
注意:
pFile=fopen("数据.txt","w+t"); --->pFile=fopen("数据.txt","wt+");
同时对文件的读写如果不是对结构体类型的成块数据最好不要使用函数fwrite()和fread();因为有时候会产生乱码。你可以使用结构化输入输出函数fscanf()和fprintf();无论是按文本文件还是二进制文件读写都不会产生乱码。
如果你的是int out[6];写入文件格式如下:
for(i=0;i<6;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%d",out[i]);/*注意这里是%d,和上面定义的类型一致*/
如果你的是char out[][6];写入文件格式如下:
for(i=0;i<字符串的个数;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%s\
",out[i]);/*注意这里是%s,和上面定义的类型一致*/
如还有疑问再说明。
如果上面是printf("%d ", out[i]); 说明out[i]是整型数组
冒险岛乐乐
18:23:14
那么fprintf(pFile,"%s\
",out[i]); 必须改为fprintf(pFile,"%d\
",out[i]);
冒险岛乐乐
18:23:30
数据类型要一致嘛
冒险岛乐乐
18:25:27
回答中我说了哦:如果你的是int out[6];写入文件格式如下:
for(i=0;i<6;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%d",out[i]);
冒险岛乐乐
18:26:10
如果你的是char out[][6];写入文件格式如下:
for(i=0;i<字符串的个数;i++)/*此句根据需要确定是否添加*/
fprintf(fp,"%s\
",out[i]);
冒险岛乐乐
18:27:42
一个是%d一个是%s分别对应定义时的int out[6]和char out[][6],就这么回事。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询