关于C语言的文件操作
从c:\first.txt文件中中读入数据,输入文件格式如下:
? 第一行一个数n,表示文件中有几组数对
? 从第二行到n+1行,每行两个数,中间以逗号分隔
对这些数据进行排序,排序方式为从小到大,先按第一个数的大小,若第一个数相同则按第二个数的大小排。结果输出到c:\first_answer.txt,输出文件的格式如下:
? 第一行一个数n,表示文件中有几组数对
? 从第二行到第n+1行,按排好序的数对输出
例如:
输入:first.txt:
4
2,3
4,6
2,6
6,8
输出:first_answer.txt:
4
2,3
2,6
4,6
6,8
初学C,文件的读取与我预期的不符..下面是我写的代码..望大虾指教下错误
#include <stdio.h>
#include <string.h>
#define MAX 20
void sort(char *string[], int num);
void main(){
//static int max = 10;
FILE *fp, *fp2, *fp3;
char stor[MAX][4];
char *data[4];
char c;
int ct = 0;
fp2 = fopen("F:/test_1.txt", "w+");
fp = fopen("F:/test.txt", "r+");
//fread(buf, sizeof(char), 3, fp);
c = fgetc(fp);
int i = (int)c;
fgetc(fp);
//int i = 4;
while(ct < i && fgets(stor[ct], 4, fp) != NULL && stor[ct][4] != '\0')
{
data[ct] = stor[ct];
ct++;
}
sort(data, ct);
fwrite(&c, sizeof(char), 1, fp2);
for(int a = 0; a < ct; a++){
fp3 = fopen("F:/test_1.txt", "a");
fwrite(data[a], sizeof(char), 4, fp3);
}
//sort(data, ct);
/*for(int a = 0; a < ct; a++){
puts(data[a]);
fwrite(data[a], sizeof(char), 4, fp2);
}*/
fclose(fp);
fclose(fp2);
}
void sort(char *string[], int num){
char *tmp;
int top, seek;
for(top = 0; top < num -1; top++)
for(seek = 1; seek < num; seek ++)
if(strcmp(string[top], string[seek]) > 0)
{
tmp = string[top];
string[top] = string[seek];
string[seek] = tmp;
}
}