Строки не работают так в Си. Вы суммируете все символы в буфере в переменную v
. Вы не можете использовать + для объединения. Код, который вы опубликовали, имеет некоторые серьезные проблемы, которые указывают на то, что есть пробел в понимании того, как использовать C.
Попробуйте это:
char *newStr (char *charBuffer) {
int length = strlen(charBuffer);
char *str;
if (length <= 1) {
str = (char *) malloc(1);
str[0] = '\0';
} else {
str = (char *) malloc(length);
strcpy(str, &charBuffer[1]);
}
return str;
}
или это:
char *newStr (char *charBuffer) {
char *str;
if (strlen(charBuffer) == 0)
str = charBuffer;
else
str = charBuffer + 1;
return str;
}
В зависимости от того, хотите ли вы выделить новую строку или нет. Вам также нужно будет добавить код для обработки случаев, которые не начинаются с 'Q' или 'A'. Я не включил их, потому что я не совсем уверен, что вы пытаетесь сделать здесь.
Удостоверьтесь, что вы провели некоторое исследование по распределению и освобождению памяти с помощью malloc и free. Это основные функции, которые можно использовать, если вы собираетесь заниматься программированием на Си.