typedef struct {
char *inputString;
int stringLenght;
} InputString;
string = (InputString *) malloc(NUMOFSTRING * sizeof(InputString));
string->inputString = (char *)malloc(STRINGLENGHT);
currentString = 1;
scanf("%c", &e);
while (e == ' ' || e == '\n') {
scanf("%c", &e);
}
while (!feof(stdin)) {
currentStringLenght = 1;
while (e != '\n' && e != ' ') {
string->inputString = &e;
currentStringLenght++;
if (currentStringLenght > STRINGLENGHT) {
string->inputString = (char*) realloc(string->inputString, currentStringLenght);
string->inputString = string->inputString + (currentStringLenght - 1);
} else {
string->inputString ++;
scanf("%c", &e);
}
}
我在做什么错?它将e的值正确地输入到inputString中,但是它不会改变位置,因此会不断覆盖字母
答案 0 :(得分:1)
您最主要的错误在于此行:
string->inputString = &e;
这将用指向e
的指针替换您分配的内存,这就是为什么它永远只是最后一个字符的原因。要将e
添加到当前位置,您需要像这样对已分配的内存进行索引:
string->inputString[currentStringLenght] = e;
尽管我认为currentStringLenght
应该是string->stringLength
,所以在完成这部分代码后您不会丢失值。
完成字符串后,还需要添加NUL字符,否则会发生不良情况。
string->inputString[currentStringLenght] = '\0';