小编Ker*_*Ker的帖子

在C中获取字符串输入的这两种方法有什么区别?

我正在学习C编程,我必须实现一个读取未知大小的输入字符串的程序.我写了这段代码:

int main() {
    char *string;
    char c;
    int size = 1;

    string = (char*)malloc(sizeof(char));

    if (string == NULL) {
        printf("Error.\n");
        return -1;
    }
    printf("Enter a string:");
    while ((c = getchar()) != '\n') {
        *string = c;
        string = (char*)realloc(string, sizeof(char) * (size + 1));
        size++;
    }
    string[size - 1] = '\0';

    printf("Input string: %s\n", string);

    free(string);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是最后一个printf不显示整个字符串而只显示最后一个字符.所以,如果我输入hello, world最后的printf打印件d.

经过一番研究后,我尝试了这段代码,它的确有效!但我并没有与我的差别.

我希望自己清楚明白,谢谢你的关注.

c string memory-management realloc

3
推荐指数
1
解决办法
143
查看次数

标签 统计

c ×1

memory-management ×1

realloc ×1

string ×1