Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.4k views
in Technique[技术] by (71.8m points)

Sorting a C file

Right so I asked here how I can sort my c file, and this was the coded response I created.

 #include <stdio.h>
 #include <conio.h>

 int main()
 {     
     FILE *fN;
     FILE *fS;

     fN=fopen("Numbers.txt","r");
     fS=fopen("Sorted.txt","w");
     system("sort Numbers.txt > Sorted.txt");
     getch();
     fclose(fS);
     fclose(fN);
 }

This always comes up with the same error message: The process cannot access the file because it is being used by another process.

does this mean I show change the libraries?, I'm really confused to why there is an error.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The code that you're posting above fundamentally uses the sort command-line utility to do the sorting. When you write

system("sort Numbers.txt > Sorted.txt");

you're invoking sort on the Numbers.txt file, then redirecting the output of the command to the file Sorted.txt.

The problem with your code is that before you try to do this, you're writing

fS=fopen("Sorted.txt","w");

This opens Sorted.txt for writing, which on most operating systems will lock the file from writing by any other process - including your sort process. To fix this, just eliminate all the fopen and fclose calls and just write

int main() {
    system("sort Numbers.txt > Sorted.txt");
}

In fairness, if this is all that your program does, just execute the above command from the command line. If you're doing this as a subroutine, though, just use the system command and don't do any manual fopen or fclose calls.

Hope this helps!


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...