I’d like your help with understanding how should I do the following:
I have a file that contains integers separated by spaces ‘ ‘. I need to read all integers, sort them and write them as a strings to another file. I wrote a code, but I read char by char, put the word in an char sub_arr [Max_Int] and when I met ‘ ‘, I put these chars, now one string, after atoi-ing it into another Main int array,until reaching the end of the file, string by string, and then I sorted and itoa-ing them and wrote them in another file.
But then I remembered that there’s a fscanf function:I read about it and still I didn’t understand completely what does it do and how to use it.
In my case, where all integers separated by space, can I write fscanf(myFile,"%s",word)? would it know not to consider ‘ ‘ and stop at the end of the specific string?! How?
More than that, Can I write fscanf(myFile,"%d",number) and it would give me the next number itself? (I must have misunderstood it. Feels like magic).
You are right,
fscanfcan give you the next integer. However, you need to provide it with a pointer. Therefore, you need an&behind number:*scanffamily of functions also automatically skip whitespace (except when given%c,%[or%n).Your loop with reading file will eventually look like this:
Side note: you may think of writing like this:
This, although looks nice, has a problem. If you are indeed reaching the end of file, you will have read a garbage number and added to your data before testing the end of file. That is why you should use the
whileloop I mentioned first.