В эти дни я играю с функциями C atol (), atof () и atoi () , из блога я нахожу учебное пособие и применил:
Вот мои результаты:
void main()
{
char a[10],b[10];
puts("Enter the value of a");
gets(a);
puts("Enter the value of b");
gets(b);
printf("%s+%s=%ld and %s-%s=%ld",a,b,(atol(a)+atol(b)),a,b,(atol(a)-atol(b)));
getch();
}
Существует atof()
, который возвращает значение с плавающей запятой строки, и atoi()
, который возвращает целочисленное значение.
Теперь, чтобы увидеть разницу между 3, я проверил этот код:
main()
{
char a[]={"2545.965"};
printf("atol=%ld\t atof=%f\t atoi=%d\t\n",atol(a),atof(a),atoi(a));
}
Вывод будет
atol=2545 atof=2545.965000 atoi=2545
char a[]={“heyyou”};
Теперь, когда вы запустите программу, будет выводиться следующее ( почему? , есть ли решение для преобразования чистых строк в целое число?)
atol=0 atof=0 atoi=0
Строка должна содержать числовое значение. Теперь измените эту программу как
char a[]={“007hey”};
Вывод в этом случае (протестирован в Red Hat Linux) будет
atol=7 atof=7.000000 atoi=7
поэтому функции заняли только 007, а не оставшуюся часть ( почему? ).
Теперь рассмотрим это
char a[]={“hey007?};
Вывод программы будет
atol=0 atof=0.000000 atoi=0
Так что я просто хочу преобразовать мои строки в числа, а затем снова в тот же текст. Я играл с этими функциями, и, как вы видите, я получаю действительно интересные результаты.
Почему это?
Существуют ли другие функции для преобразования из / в строку / целое число и наоборот?
EDIT:
Так что в качестве входных данных, если я возьму несколько имен или что-то еще, я преобразую их в целые числа / числа с плавающей запятой ... затем применю некоторые другие функции.
Также мне любопытно, буду ли я использовать тот же вывод с теми же входами, когда использую какие-либо ваши предложения?