Я полный новичок в программировании. Помоги мне, пожалуйста. Я пытаюсь написать программу, которая читает из файла .txt и сохраняет значения в двумерном массиве, а затем печатает массив, чтобы показать, что он получил.
Это то, что содержится в моем .txt файле:
100 200 300
400 500 600
Это программа, которую я написал:
#include <stdio.h>
main(){
//reading file
FILE *fp;
fp=fopen("c:\\users\\user\\desktop\\Arpon 4-1\\Thesis Programming\\Nov18-1.txt", "r");
//creating a 2d array
float a[9][9]={0};
//getting the data into the array
int r,c;
for(r=0; r<=1; r++){
for(c=0; c<=2; c++){
fscanf(fp, "%f", &a[r][c]);
}
}
//printing the array
for(r=0; r<=9; r++){
for(c=0; c<=9; c++){
printf("%.0f ", a[r][c]);
}
printf("\n");
}
}
Программа делает то, что я намереваюсь сделать, но вывод получается так:
100 200 300 0 0 0 0 0 0 400
400 500 600 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 1990463982126334400000000000000000
1990463982126334400000000000000000 0 0 0 0 0 0 0 0 0
Почему последний столбец и строка ведут себя так? a [0] [9], a [8] [9] и a [9] [0] должны быть нулями, поскольку я инициализировал весь массив как 0 в строке 8. Но это не так. Это беспокоит меня много. Пожалуйста, помогите!
p.s. Если я напишу float a[9][9];
вместо float a[9][9]={0};
, результат будет хуже. Но, как я понимаю, это тоже должно было сработать, потому что любой массив по умолчанию должен начинаться с нуля.
Вывод в этом случае выглядит так:
100 200 300 0 0 0 0 0 0 400
400 500 600 0 0 0 0 -144118967647076350 0 0
0 3508856861431739000000000000000000 2070380395102208 0 0 0 0 -0 0 1921062897128927200000000000000000
1921062897128927200000000000000000 0 0 0 0 0 -0 0 1921062897128927200000000000000000 0
0 0 1921064599296481200000000000000000 -0 0 0 3501549920349857000000000000000000 3486704852883756600000000000000000 -1 0
0 0 0 0 -5529745792027328500 0 0 0 0 1931126885420802600000000000000000
1931126885420802600000000000000000 0 0 1941291301598365100000000000000000 1990334617392229100000000000000000 0 1940873342092601300000000000000000 0 1931097793829879400000000000000000 1931096401147335200000000000000000
1931096401147335200000000000000000 -0 0 0 0 0 0 0 0 1934835908521006500000000000000000
1934835908521006500000000000000000 -406541672906752 -1 1931096401147335200000000000000000 1931134003576028500000000000000000 0 0 0 0 1990463982126334400000000000000000
1990463982126334400000000000000000 0 0 0 0 0 0 0 0 0
Первые 6 значений в порядке, но остальные вещи, да ладно :(