В count()
вы увеличиваете неинициализированную переменную , вызывая неопределенное поведение (UB).
Измените это:
int count() {
int i;
на следующее:
int count() {
int i = 0;
newVector()
равно , а не , возвращая динамически выделенную память.
Измените это:
coord *newVector(size_t s) {
...
}
на следующее:
coord *newVector(size_t s) {
...
return v;
}
После устранения этих проблем вы должны увидеть следующие выходные данные:
1.000000 2.000000 3.000000
4.000000 5.000000 6.000000
7.000000 8.000000 9.000000
Не проблема, но я бы использовал %lf
в качестве спецификаторов формата вfscanf()
вместо %le
.
Более того, в count()
этот return(i);
совпадает с return i;
.Скобки избыточны.
TODO: Освободить динамически выделенную память (я предполагаю, что вы пропустили эту часть для предоставления MCVE).
Pro-tip: Компилировать с включенными флагами предупрежденийв следующий раз.Они уже нашли бы проблему для вас в этом случае.В GCC, например, я бы получил это:
gsamaras@myPc:~$ gcc -Wall main.c
main.c: In function ‘main’:
main.c:51:28: warning: unused variable ‘j’ [-Wunused-variable]
int i = 0, j=0;
^
main.c: In function ‘newVector’:
main.c:37:13: warning: control reaches end of non-void function [-Wreturn-type]
}
^
, где последнее предупреждение является вторым пунктом в моем ответе.