Как записать число в строку в обратном порядке? - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д