c - 关于 C 编程中程序的 2 个问题 - 绝对初学者指南

标签 c arrays for-loop

在C Programming - Absolute Beginner's Guide第18章,例子2中,程序是这样写的

#include <stdio.h>
#include <stdlib.h>

main ()
{
    int i;
    char msg[25];

    printf("Type up to 25 characters and then press Enter...\n");
    for (i = 0; i < 25; i++)
    {
        msg[i] = getchar();
        if (msg[i] == '\n')
        {
            i--;
            break;
        }
    }

    putchar('\n');

    for (; i >= 0; i--)
    {
        putchar(msg[i]);
    }

    putchar('\n');

    return 0;
}

我有 2 个关于该计划的问题。

  1. msg 被分配到一个包含 25 个字符的数组,而 printf 告诉用户最多可以输入 25 个字符。难道不应该为 msg 分配一个 26 个字符的数组来容纳反斜杠零吗?

  2. 当for循环这样写时:for(; i >= 0; i--),start表达式是什么?

最佳答案

  1. 你说得对,字符串需要多一个字节作为终止符。

    但程序从不将其视为字符串,因此这是一个有争议的问题。

  2. 没有。

    C for 循环中的表达式都不是必需的。

    作为一个典型的例子,惯用的无限循环:

    for(;;) /* Do things */;
    

关于c - 关于 C 编程中程序的 2 个问题 - 绝对初学者指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26985980/

相关文章:

c - 编写接受指针变量并将值从文件分配给 C 结构的函数

关于指针大小的混淆

使用指针反转字符串的 C 代码

Python for循环迭代和访问列表列表

python - 如何编写 for 循环,以便程序针对一组 94 个 DNA 样本重复自身?

c - 函数的隐式声明 "setWeight"

c - 使用malloc动态分配内存,尝试在cygwin中编译时收到错误

python - 有没有办法通过将 python 列表快速转换为 numpy 矩阵来搜索列表?

javascript - 尝试结合使用 jQuery 的 window.open 函数和 for 循环来迭代数组时出现问题

php - 在 list.phtml 中显示产品属性 - Magento