CPallini
Я публикую здесь вывод современного компилятора с 'все предупреждения активированы'вариант (а именно gcc -Wall
) вызывается в вашем коде:
foo.c:3:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
main()
^
foo.c: In function ‘main’:
foo.c:8:9: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat=]
printf("%s");
^
foo.c: In function ‘newme’:
foo.c:23:11: warning: implicit declaration of function ‘atof’ [-Wimplicit-function-declaration]
Data[i]=atof(token);
^
foo.c:26:10: warning: format ‘%f’ expects argument of type ‘double’, but argument 2 has type ‘int’ [-Wformat=]
printf("%f",Data[i]);
^
foo.c:30:9: warning: function returns address of local variable [-Wreturn-local-addr]
return input2;
^
foo.c:29:2: warning: ‘I’ is used uninitialized in this function [-Wuninitialized]
printf("\n data =%f %f %f %f %f %f %f %f %f",A,B,C,D,E,F,G,H,I);
^
foo.c:29:2: warning: ‘H’ is used uninitialized in this function [-Wuninitialized]
foo.c:29:2: warning: ‘G’ is used uninitialized in this function [-Wuninitialized]
foo.c:29:2: warning: ‘F’ is used uninitialized in this function [-Wuninitialized]
foo.c:29:2: warning: ‘E’ is used uninitialized in this function [-Wuninitialized]
foo.c:29:2: warning: ‘D’ is used uninitialized in this function [-Wuninitialized]
foo.c:29:2: warning: ‘C’ is used uninitialized in this function [-Wuninitialized]
Теперь давайте рассмотрим вышеописанный беспорядок...
foo.c:3:1: warning: return type defaults to ‘int’ [-Wimplicit-int]
main()
^
Вы всегда должны указывать
тип возвращаемого значения в
C
функция (в данном конкретном случае вам повезло, потому что по умолчанию,
int
, правильно).
foo.c: In function ‘main’:
foo.c:8:9: warning: format ‘%s’ expects a matching ‘char *’ argument [-Wformat=]
printf("%s");
^
Вы не указали необходимый аргумент (строку для печати).
foo.c: In function ‘newme’:
foo.c:23:11: warning: implicit declaration of function ‘atof’ [-Wimplicit-function-declaration]
Data[i]=atof(token);
^
Вы должны включить
stdlib.h
для того чтобы использовать
atof
.
foo.c:26:10: warning: format ‘%f’ expects argument of type ‘double’, but argument 2 has type ‘int’ [-Wformat=]
printf("%f",Data[i]);
^
Существует несоответствие между спецификатором формата и типом переменной для распечатки (обычно вам нужно либо изменить спецификатор формата типа переменной).
foo.c:30:9: warning: function returns address of local variable [-Wreturn-local-addr]
return input2;
^
Это должно заставить звенеть колокольчик очень громко в вашей голове, потому что обычно это первый признак приближающейся катастрофы: после выполнения функции локальная переменная больше не существует.
foo.c:29:2: warning: ‘I’ is used uninitialized in this function [-Wuninitialized]
printf("\n data =%f %f %f %f %f %f %f %f %f",A,B,C,D,E,F,G,H,I);
^
foo.c:29:2: warning: ‘H’ is used uninitialized in this function [-Wuninitialized]
foo.c:29:2: warning: ‘G’ is used uninitialized in this function [-Wuninitialized]
foo.c:29:2: warning: ‘F’ is used uninitialized in this function [-Wuninitialized]
foo.c:29:2: warning: ‘E’ is used uninitialized in this function [-Wuninitialized]
foo.c:29:2: warning: ‘D’ is used uninitialized in this function [-Wuninitialized]
foo.c:29:2: warning: ‘C’ is used uninitialized in this function [-Wuninitialized]
Распечатка неинициализированных переменных обычно дает причудливые результаты.
Суть в следующем: компилятор - ваш друг, используйте его с умом.
Erebus_22
Остальная часть кода в порядке, возвращаемое значение будет скопировано в другую переменную, потому что оно временное. Основное значение функции по умолчанию - int . %S-это посторонний оператор в main . На самом деле проблема заключается в пользовательской функции
< pre>
токен=strtok(input2, seps);
а(знак!=Нуль)
{
Data[i]=atof(токен);
токен=strtok(NULL, seps);
я++;
printf ("%f", Data[i]);
}
printf ("\n%d", i);
A=Данные[0]; B=Данные[1]; C=Данные[2]; D=Данные[3]; E=Данные[4]; F=Данные[5];G=Данные[6]; H=Данные[7]; I=Данные[8];
printf ("\n data =%f %f %f %f %f %f %f % f %F", A, B, C, D, E, F, G, H, I);
< / pre>
Возвращаемые значения должны быть значениями, переданными функции, но это не так, вот в чем проблема.
Спасибо за Ваш вклад, но главной проблемой было исключение stdlib.