c - 为什么数组的元素打印不正确?

标签 c arrays function printing

我刚刚开始使用 C。我编写了一些非常基本的代码用于练习,它应该将键盘输入读取到数组中,输出最长行的长度,然后打印它。 有一个函数来读取输入,我希望它打印出每次分配给数组的每个字符,但它不起作用。它打印出一些看起来很奇怪的字符。 我确实在寻找“数组打印垃圾”。但没有找到答案。

    int getline(char line[])
    /*
    This function   1) Reads a line of input until a '\n',
                    2) Returns the length of the line and
                    3) Saves the line in the array "line[]"
    */
    {
        int c,i;
        i=0; // The character count
        printf("Enter characters:\n");

        while((c=getchar())!='\n') // Reads input until it hits a '\n'
        {
            line[i]=c;
            i++;
            printf("char %d = %c \n ",i,line[i]);// 

为什么这个“printf”不能正常工作?它在第二个占位符处打印一个奇怪的字符

        }
        printf("you typed %d characters.\n",i); //Outputs the number of characters typed

        return i;
    }

最佳答案

在增加 i 后,您将打印 line[i] 。因此,您总是在刚刚设置的元素之后打印元素,这通常是垃圾。

放线

i++;

while 循环的末尾。

关于c - 为什么数组的元素打印不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17009303/

相关文章:

c - 如何将内存数据库文件打开到 sqlite3 中

c++ - 无法将 char (*)[1000] 转换为 char **

java - 哪个在内存 : char[] or String? 方面是有效的

javascript - IIFE 运行函数声明和函数表达式,结果不同

c - C linux中的时间函数

java - 函数重载: Terminology for different types of overloaded functions?

c - Bash 没有这样的文件或目录错误(缓存模拟器)

c - char 数组中的整数

java - 在 Java 中打印数组

php - 我可以在类变量中添加没有赋值的 PHP 数组键吗?