文件操作
提示用户输入2个整数m、n,然后用fopen新建一个文件,最后用fwrite保存。
例如,用户输入12、13,则写入文本"m=12,n=13"。
由于要求采用字符串的方式写入,需要先将整数转化为字符串。
/*************
提示用户输入2个整数m、n,然后用fopen新建一个文件,最后用fwrite保存。
例如,用户输入12、13,则写入文本"m=12,n=13"。
*************/
#include <stdio.h>
int itoa_my(int value, char *string, int radix);
int main()
{
const char * filename = "E:\\C++programming\\test.txt";
int m = 0;
int n = 0;
int mw = 0;
int nw = 0;
printf("Please enter two integers m and n:\n");
scanf("%d,%d",&m,&n);
FILE * fp = fopen(filename,"wb");
if (NULL == fp)
{
printf("failed to open file!\n");
return -1;
}
const char * buff1 = "m=";
const char * buff2 = ",n=";
char buff3[10];
char buff4[10];
mw = itoa_my(m,buff3,10);
if (mw == -1)
{
fclose(fp);
return -1;
}
nw = itoa_my(n, buff4, 10);
if (nw == -1)
{
fclose(fp);
return -1;
}
fwrite(buff1,1,2,fp);
fwrite(buff3, 1,mw, fp);
fwrite(buff2,1,3,fp);
fwrite(buff4, 1, nw, fp);
fclose(fp);
return 0;
}
/***********************
value:转换的正整数;
string:转换后存储的位置;
radix:以多少进制转换2,8,10,16
返回值:整数的位数
***************************/
int itoa_my(const int value, char *string, const int radix)
{
char zf[17] = "0123456789abcdef";
char a[100] = { 0 };
int num = value;
char *cp = string;
int i = 0;
if (radix<2 || radix>16)
{
printf( "error data!\n") ;
return -1;
}
if (num < 0)
num = -num;
if (num == 0)
a[i++] = zf[0];
while (num>0)
{
a[i++] = zf[num%radix];
num /= radix;
}
if (value < 0)
a[i++] = '-';
for (int j = i - 1;j >= 0;j--)
{
*cp++ = a[j];
}
*cp = '\0';
return i;
}