当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在C中获取字符串输入的这两种方法有什么区别?》经验,为你挑选了1个好方法。

我正在学习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;
}

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

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

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



1> mttrb..:

在你的代码的版本,你的新读取字符分配,cstring使用:

*string = c;

*string 指向字符串的开头,以便继续用新读取的字符替换字符串的第一个字符.

您链接的代码执行以下操作:

str[i] = c

基本上,它使用索引将字符分配给字符串的末尾i.

在您的代码版本中,您可以使用size - 1而不是代码i.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有