I"m make the efforts to read numbers from a text paper into an array. The message file, "somenumbers.txt" just holds 16 numbers as so "5623125698541159".
#include main(){ file *myFile; myFile = fopen("somenumbers.txt", "r"); //read file into variety int numberArray<16>; int i; for (i = 0; i The program doesn"t work. The compiles yet outputs:
Number is: -104204697
Number is: 0
Number is: 4200704
Number is: 2686672
Number is: 2686728
Number is: 2686916
Number is: 2004716757
Number is: 1321049414
Number is: -2
Number is: 2004619618
Number is: 2004966340
Number is: 4200704
Number is: 2686868
Number is: 4200798
Number is: 4200704
Number is: 8727656
Process reverted 20 (0x14) execution time : 0.118 sPress any an essential to continue.
You are watching: Read numbers from file c++



5623125698541159 is treated as a single number (out of range of int on many architecture). You have to write numbers in your paper as
5 6 2 3 1 2 5 6 9 8 5 4 1 1 5 9 because that 16 numbers.
If your file has input
5,6,2,3,1,2,5,6,9,8,5,4,1,1,5,9 then adjust %d identify in your fscanf come %d,.
fscanf(myFile, "%d,", &numberArray ); below is your complete code after few modifications:
#include #include int main(){ document *myFile; myFile = fopen("somenumbers.txt", "r"); //read paper into selection int numberArray<16>; int i; if (myFile == NULL) printf("Error reading File
"); departure (0); for (i = 0; ns

for (i = 0; i This is attempting to check out the entirety string, "5623125698541159" into &numArray<0>. You require spaces in between the numbers:
5 6 2 3 ...

See more: The Eden Project - Times Like These, Times Like These
There room two problems in her code:the return worth of scanf must it is in checkedthe %d counter does no take overflows right into account (blindly applying *10 + newdigit for each continuous numeric character)
The very first value you gained (-104204697) is equates to to 5623125698541159 modulo 2^32; the is thus the an outcome of an overflow (if int wherein 64 bits wide, no overflow would happen). The following values room uninitialized (garbage from the stack) and thus unpredictable.
The password you need can be (similar come the price of BLUEPIXY above, through the illustration just how to inspect the return value of scanf, the number of items effectively matched):
#include int main(int argc, char *argv<>) int i, j; short unsigned digitArray<16>; ns = 0; if ( ns != sizeof(digitArray) / sizeof(digitArray<0>) && 1 == scanf("%1hu", digitArray + i) ) i++; because that (j = 0; j != i; j++) printf("%hu
", digitArray