Предполагается, что этот код удалит все начальные пробелы из данной строки, и он работал правильно. Затем, по-видимому, без всякой причины, он начал удалять символы в середине слова. В этом примере дается слово «CHEDDAR», которое не имеет начальных пробелов, поэтому его следует передавать так же, как оно было введено, однако возвращается «CHEDDR», и я понятия не имею, почему. Кто-нибудь знает, как это вообще возможно? Я предполагаю, что это связано с указателями и памятью, но я не владею C и мне нужна помощь. Бег на RHEL. Спасибо.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define REMOVE_LEADING_SPACES(input) \
{ \
stripFrontChar( input, ' ' ); \
}
char *stripFrontChar(char *startingString, char removeChar) {
while (*startingString == removeChar)
strcpy(startingString, startingString + 1);
return (startingString);
}
void main(argc, argv)
char **argv;int argc; {
char *result = "CHEDDAR";
REMOVE_LEADING_SPACES(result);
printf("%s\n", result);
}
РЕДАКТИРОВАТЬ: Сейчас немного поздно, но на основании комментариев я должен был показать, что слово (CHEDDAR я использовал в качестве примера) читается из файла, а не из литерала, как показано в мой код Я пытался упростить этот вопрос, и теперь я понимаю, что это совершенно другой сценарий, поэтому не должен был этого делать. Спасибо, похоже, мне нужно использовать memmov.
EDIT2: На самом деле есть пробел, похожий на "CHEDDAR", поэтому мне просто нужно изменить его на memmov, еще раз спасибо всем.