c - 这条线有什么作用?

标签 c

<分区>

下面的代码不是我做的。我正在搜索并在其他人的问题中找到了它。

#include <stdio.h>
#define NAME_MAX    80
#define NAME_MAX_S "80"

int main(void)
{
    static char name[NAME_MAX + 1]; // + 1 because of null
    if(scanf("%" NAME_MAX_S "[^\n]", name) != 1) // This line
    {
        fputs("io error or premature end of line\n", stderr);
        return 1;
    }

    printf("Hello %s. Nice to meet you.\n", name);
}

你能告诉我标记线的作用吗?

最佳答案

这是一个字符串连接。当你写字符串时,你可以在编译时将它们连接起来,所以:

 "%" NAME_MAX_S "[^\n]",

最终会变成:

 "%80[^\n]"

scanf然后将读入名为 name 的变量 80 个不是 newline 的字符。

关于c - 这条线有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13903998/

相关文章:

iphone - 使用 OpenGL ES 2.0 显示/处理 iPhone 相机帧

c - malloc成功但分配失败

c - 将 char 指针强制转换为 int 指针是未定义的行为吗?

c - GCC:为什么 const 数据填充在我的函数内部而不是开头?

c - !! c 运算符,是两个 NOT 吗?

jquery - 只写 websocket 通信(从 HTTP 服务器到浏览器)

c - C语言中的限定符是什么?

iphone - 如何确定一组特定实验值的比例因子

c - strcmp无法比较链接列表中的字符串

c++ - C:使用 strtol endptr 永远不会为 NULL,无法检查值是否仅为整数?