Пожалуйста, имейте в виду, что единственными функциями, которые я могу использовать, являются mallo c, free и write.
Если вы используете функцию malloc
, то функция возвращает указатель на первый байт выделенной памяти. Таким образом, если выделенный массив будет содержать строку, то ее начало будет известно.
Задача состоит в том, чтобы найти конец строки.
Вы можете использовать либо стандартную C функцию strlen
или напишите свой собственный l oop, который найдет конец сохраненной строки.
Так что, если у вас есть два указателя, один из которых указывает на начало строки, а второй - на конец той же строки, а затем пройти строку в обратном порядке - не тяжелая работа.
Обратите внимание на то, что если у вас есть массив символов, который содержит такую строку
char s[] = "Hello";
, то выражения s, s + 1, s + 2 и т. Д. На всех точках указывают на строку соответственно "Hello", "ello", "llo" и т. д.
Вы можете найти начало строки, имеющей указатель на ее конец, при условии, что первый элемент массива содержит уникальный символ, который дозорная стоимость. Однако в целом это очень редкий случай.
Вот демонстрационная программа, которая показывает, как вы можете пройти строку в обратном порядке без использования стандартных C строковых функций, кроме функции, которая помещает строку в динамически распределяемый массив.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
enum { N = 12 };
char *s = malloc( N );
strcpy( s, "Hello World" );
puts( s );
char *p = s;
while ( *p ) ++p;
while ( p != s ) putchar( *--p );
putchar( '\n');
free( s );
return 0;
}
Выходные данные программы:
Hello World
dlroW olleH