当前位置: 代码迷 >> C语言 >> [求助] 文件操作的问题
  详细解决方案

[求助] 文件操作的问题

热度:151   发布时间:2006-06-08 16:18:41.0
[求助] 文件操作的问题

为什么写入文件后,是0~9ASCII码字符。
如何使输出的文件中的内容是0~9的数值?

#include<iostream.h>
#include<stdio.h>
void main()
{
FILE *fp1;
int a[10],i=0;
char infile[10];

cin>>infile;

for(i=0;i<10;i++)
a[i]=i;

if((fp1=fopen(infile,"wb+"))==NULL)
{
cout<<"cannot open file\n";
return;
}

for(i=0;i<10;i++)
fwrite(&a[i],sizeof(int),1,fp1);
fclose(fp1);
}

搜索更多相关的解决方案: 文件  

----------------解决方案--------------------------------------------------------
先改成C后我告诉你
----------------解决方案--------------------------------------------------------
fwrite这个函数我不熟悉,
不过,您可以改成fprintf(fp1,"%2d",a[i]);呀?

----------------解决方案--------------------------------------------------------

没太看懂楼主的意思,你指写入文件的ASCII是什么意思,没太明白,你那个就是把0-9写入文件,不需要用FWRITE,下面是写入和读出

#include <stdio.h>

#define ARRAY_SIZE 10
#define FILE_NAME_LENGTH 20

void input_array_data(int liv_array[]);
void write_file(int liv_array[]);
void clear_array(int liv_array[]);
void read_file(int liv_array[]);
void print_array(int liv_array[]);

int main(void)
{
int liv_array[ARRAY_SIZE]; /* 使用数组 */

input_array_data(liv_array); /* 输入数组数据 */

print_array(liv_array); /* 打印数组 */

write_file(liv_array); /* 数组数据写入文件 */

clear_array(liv_array); /* 置空数组 */

read_file(liv_array); /* 从文件中读取 */

print_array(liv_array); /* 打印数组 */

return 0;
}

void input_array_data(int liv_array[])
{
int i;

printf("enter every array element:\n");
for (i = 0; i < ARRAY_SIZE; i++)
{
scanf("%d", &liv_array[i]);
}
}

void write_file(int liv_array[])
{
FILE *fp;
int i;
char liv_filename[FILE_NAME_LENGTH];

printf("enter write filename: ");
scanf("%s", liv_filename);

if ((fp = fopen(liv_filename, "wt")) == NULL)
{
exit(1);
}

for (i = 0; i < ARRAY_SIZE; i++)
{
fprintf(fp, "%d ", liv_array[i]);
}

fclose(fp);
}

void clear_array(int liv_array[])
{
int i;

for (i = 0; i < ARRAY_SIZE; i++)
{
liv_array[i] = 0;
}
}

void read_file(int liv_array[])
{
FILE *fp;
int i;
char liv_filename[FILE_NAME_LENGTH];

printf("enter read filename: ");
scanf("%s", liv_filename);

if ((fp = fopen(liv_filename, "rt")) == NULL)
{
exit(1);
}

for (i = 0; i < ARRAY_SIZE; i++)
{
fscanf(fp,"%d", &liv_array[i]);
}
}

void print_array(int liv_array[])
{
int i;

for (i = 0; i < ARRAY_SIZE; i++)
{
printf("%d ", liv_array[i]);
}

printf("\n");
}







----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽

2006-06-08 13:25:19
feng1256

等 级:贵宾
威 望:14
帖 子:2899
专家分:0
注 册:2005-11-24
  得分:0 

[CODE]
#include <iostream.h>
#include <stdio.h>
int main()
{
FILE *fp1;
int a[10],i=0;
char infile[10];

cin>>infile;

for(i=0;i<10;i++)
a[i]=i;

if((fp1=fopen(infile,"wt+"))==NULL)
{
cout<<"cannot open file\n";
exit(-1); /*这样好些*/
}

for(i=0;i<10;i++)
fprintf(fp1,"%d ",a[i]); /*这里fwrite()以%c写入*/

fclose(fp1);
}

[/CODE]


----------------解决方案--------------------------------------------------------
  相关解决方案