배열을 사용하지 않고 빠른 정렬로 파일 번호를 정렬하려고합니다. 그러나 특정 위치의 번호를 다른 위치로 대체 할 수있는 방법을 모르겠습니다.C의 파일에서 숫자 정렬
int main()
{
FILE* F1=fopen("file.txt","r+");
int var1, var2, min;
while(fscanf(F1, "%d", &var1) ==1){
min = var1;
long pos1 = ftell(F1);
fseek(F1, 0, SEEK_SET);
while(fscanf(F1, "%d", &var2) ==1){
if(min > var2)
{
//Replace the var2 by min in the file
}
}
fseek(F1, pos1, SEEK_SET);
}
}
, 그것은 가능하다하십시오 이 코드를 만들어 시작 했어?
먼저 데이터를 메모리에로드하고 다음으로 정렬해야합니다. – Crack81
아니, 아니, 아니! 파일의 데이터를 정렬하려면 먼저 메모리로 읽은 다음 정렬하십시오. 평소 스왑을 ftell/fseek mumbo-jumbo로 바꾸는 것은 미친 일입니다. –
모든 텍스트 값의 자릿수가 같지 않으면 작동하지 않습니다. 어쨌든'ftell'은 방금 읽은 번호의 파일 위치를 알려주지 않습니다. 파일 포인터는 끝 문자를 가리 키도록 향상되었습니다 - 다음 숫자도 아닙니다! –