首先:以自然数列为txt命名。
这在C++中很容易实现,之间诶to_string(int num)+".txt"就可以,但是在C中没有string,只有char,那怎么办?
这里需要将自然数转化成 char,准确的说是char数组。代码实现:
char* Int2String(int num,char *str)//10进制 { int i = 0;//指示填充str if(num<0)//如果num为负数,将num变正 { num = -num; str[i++] = '-'; } //转换 do { str[i++] = num%10+48;//取num最低位 字符0~9的ASCII码是48~57;简单来说数字0+48=48,ASCII码对应字符'0' num /= 10;//去掉最低位 }while(num);//num不为0继续循环 str[i] = '\0'; //确定开始调整的位置 int j = 0; if(str[0]=='-')//如果有负号,负号不用调整 { j = 1;//从第二位开始调整 ++i;//由于有负号,所以交换的对称轴也要后移1位 } //对称交换 for(;j<i/2;j++) { //对称交换两端的值 其实就是省下中间变量交换a+b的值:a=a+b;b=a-b;a=a-b; str[j] = str[j] + str[i-1-j]; str[i-1-j] = str[j] - str[i-1-j]; str[j] = str[j] - str[i-1-j]; } return str;//返回转换后的值 }
好了,这一步做好,文件命名就可以解决了。
下面是将十进制数写入txt,这里要区分两个函数:
fprintf(fp, "%d", buffer); 是将格式化的数据写入文件 fprintf(文件指针,格式字符串,输出表列); fwrite(&buffer, sizeof(int), 1, fp);是以二进位方式写入文件 fwrite(数据,数据类型大小(字节数),写入数据的最大数量,文件指针);
fprintf是带格式化的数据写入文件,十进制就是十进制,打印效果和写入文件的效果相同。
fwrite是自然数是以二进制的方式写入文件,char不变。
希望可以帮到疑惑的你!