Я пытаюсь изменить строку с помощью функции и некоторых указателей, но я не могу заставить эту функцию обновлять исходную строку.Обратная строка с указателями?
#include <stdio.h>
#include <string.h>
void rev(char* string)
{
char str2[strlen(string)];
char *p1;
char *p2;
p1 = string + strlen(string)-1;
p2 = str2;
while(p1 >= string)
*p2++ = *p1--;
*p2 = '\0';
p2 = p2 - strlen(string);
string = p2; // This codesn't seem to update s1 or s2
}
int main(void)
{
char s1[100] = "What does the fox say?";
char s2[100] = "Titanic sinks";
rev(s1);
rev(s2);
printf("\n\n%s\n", s1);
printf("%s\n", s2);
return 0;
}
Функциональность работает, но я не могу заставить строки в основном обновляться с измененной строкой. Imo string = p2
должен обновить строку до обратного значения. Это происходит, но только внутри функции, а не в основной функции ...
Я не» Думаю, что это работает: 'char str2 [strlen (str ING)] '. – Batuu
@Batuu C99 имеет массивы переменной длины – Deck
вместо создания str2, просто работайте с исходной строкой и, используя указатели, меняйте символы. – imran