Это то, что я пытаюсь сделать, но мой код либо не компилируется, либо дает мне неожиданный вывод «BC», а не просто «B».Как передать массив «по ссылке» в C?
#include <stdio.h>
void removeFirstAndLastChar(char** string) {
*string += 1; // Removes the first character
int i = 0;
for (; *string[i] != '\0'; i++);
*string[i - 1] = '\0';
}
int main(void) {
char* title = "ABC";
removeFirstAndLastChar(&title);
printf("%s", title);
// Expected output: B
return 0;
}
Я просмотрел много ответов здесь, связанных с передачи указателей по ссылке, но ни один из них, казалось, содержат операции, которые я хочу сделать в моей removeFirstAndLastChar функции().
Неопределенное поведение при попытке изменить строковый литерал. – EOF
Вы должны изменить 'char * title =" ABC ";' to 'char title [] =" ABC ";' – mch
Вам нужно '(* string) [i]' вместо '* string [i]'. –