Запись строки в обратном порядке в новую строку - C (СИ)
Формулировка задачи:
По заданию нужно ввести строку и переписать ее в обратном порядке в новую строку. Где-то ошибка в цикле:
char s[100],s1[100];
int i,j,n=0;
puts("Enter a string:" );
gets(s);
for(i=0;s[i]!='\0';i++)
n++;
printf("The line printed backward is: " );
for(j=0;j<=n;j++)
{
for(i=n-1;i>=0;i--)
{
s1[j]=s[i];
}
printf("%c",s1[j]);
}Решение задачи: «Запись строки в обратном порядке в новую строку»
textual
Листинг программы
char * pS = s, * pS1 = s1; while ( *pS ) ++pS; while ( pS > s ) *pS1++ = *(--pS); *pS1 = '\0';
Объяснение кода листинга программы
s- исходная строкаpS- указатель на первый символ исходной строкиpS1- указатель на переменную, в которую будет записываться обратная строка*- символ, используемый для разыменования указателейpS > s- условие, которое означает, что указательpSдолжен быть больше, чем указательspS1++- оператор, который увеличивает указательpS1на единицу*(--pS)- операция разыменования указателяpSи получения значения, с последующим уменьшением указателяpSна единицу*- символ, используемый для разыменования указателейpS1 = s1- присваивание указателюpS1значения переменнойs1s1- переменная, в которую будет записываться обратная строка\0- символ, который используется для обозначения конца строки*- символ, используемый для разыменования указателейpS1- указатель на переменнуюs1pS1[0]- первый символ переменнойs1pS1[1]- второй символ переменнойs1pS1[2]- третий символ переменнойs1pS1[3]- четвертый символ переменнойs1pS1[4]- пятый символ переменнойs1pS1[5]- шестой символ переменнойs1pS1[6]- седьмой символ переменнойs1