Как записать число в строку в обратном порядке? - C (СИ)
Формулировка задачи:
Только начал изучать программирование. Задали задачу. Есть число а = 12389329, есть массив buf[1024]. Надо записать число в массив в виде строки и записать число в файл.
Создал цикл, но проблема в том, что цифры "выходят" в обратном порядке. Что мне сделать дальше? Помогите пожалуйста!
Листинг программы
- #include <stdio.h>
- void main (void)
- {
- int a = 12389329;
- char buf[1024];
- while (a > 0)
- {
- b = a % 10;
- a /= 10;
- b += 48;
Решение задачи: «Как записать число в строку в обратном порядке?»
textual
Листинг программы
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- void inplace_reverse(char * string) {
- if (string) {
- char * end = string + strlen(string) - 1;
- #define XOR_SWAP(a,b) do\
- {\
- a ^= b;\
- b ^= a;\
- a ^= b;\
- } while (0)
- while (string < end) {
- XOR_SWAP(*string, *end);
- string++;
- end--;
- }
- #undef XOR_SWAP
- }
- }
- void strrev(char *buffer) {
- char *temp = buffer;
- while(temp && *temp) {
- ++temp;
- }
- for(--temp; buffer < temp; ++buffer, --temp)
- *buffer = *buffer ^ *temp,
- *temp = *buffer ^ *temp,
- *buffer = *buffer ^ *temp;
- }
- int main(void) {
- int a = 12389329;
- char buf[1024];
- sprintf(buf, "%d", a);
- printf("Число: %s\n", buf);
- strrev(buf);
- printf("Число: %s\n", buf);
- FILE* fd = fopen("file/number.txt", "w");
- if (fd == NULL) {
- printf("Ошибка открытия файла!\n");
- exit(1);
- }
- fprintf(fd, "%s\n", buf);
- fclose(fd);
- return EXIT_SUCCESS;
- }
Объяснение кода листинга программы
- Включаются необходимые заголовочные файлы: stdio.h, stdlib.h и string.h
- Определяются две функции: inplace_reverse и strrev.
- Функция inplace_reverse принимает указатель на строку и инвертирует её порядок символов. Используется техника XOR_SWAP для обмена символами.
- Функция strrev принимает указатель на строку и переворачивает её. Она сначала находит конец строки, затем начинает обратное перебирание символов и меняет их местами с символами, идущими слева от них.
- В функции main создается переменная a со значением 12389329.
- Создается буферная строка buf размером 1024 символа.
- В строку buf записывается число a, используя функцию sprintf.
- Выводится число в обратном порядке, используя функцию strrev и printf.
- Открывается файл
file/number.txt
для записи, используя функцию fopen. - Если файл не может быть открыт, выводится сообщение об ошибке и программа завершается с кодом ошибки 1.
- В файл записывается число в обратном порядке, используя функцию fprintf.
- Файл закрывается с помощью функции fclose.
- Программа завершается с кодом успеха EXIT_SUCCESS.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д