c - c! 是什么意思? ='\n' 在 for 语句中做什么?

标签 c

我是一名初学者,正在使用 k&r 的 C 编程书籍学习编码。现在有一个“输入一组文本行并打印最长的程序”的示例

我给你完整的代码:

    #include<stdio.h>
    #define MAXLINE 1000

    int getline(char line[], int maxline);
    void copy(char to[], char from[]);

    int main()
    {
    int len;
    int max;
    char line[MAXLINE];
    char longest[MAXLINE];
    max=0;

    while((len=getline(line,MAXLINE))>0)
    if(len>max)
    {
    max=len;
    copy(longest,line);
    }
    if(max>0)
    printf("%s",longest);
    return 0;
    }

    int getline(char s[], int lim)
    {
    int c,i;
    for(i=0;i<lim-1&&(c=getchar())!=EOF&&c!='\n';i++)
    s[i]=c;
    if(c=='\n')
    {
    s[i]='\n';
    i++;
    }
    s[i]='\0';
    return i;
    }

    void copy(char to[], char from[])
    {
    int i;
    i=0;
    while((to[i]=from[i])!='\0')
    i++;
    }

现在告诉我,在 getline 函数中,在语句中:

    for(i=0;i<lim-1&&(c=getchar())!=EOF&&c!='\n';i++)

为什么我们使用“c!='\n' ”

这个 for 语句之后的代码的含义是什么,即

     s[i]=c;
     if(c=='\n)
     {
     s[i]=c;
     i++;
     }
     s[i]='\0'

为什么我们在这里使用 s[i]='\0' ?

i++; 语句在 if(c=='\n') 条件中?

最佳答案

for(i=0;i<lim-1&&(c=getchar())!=EOF&&c!='\n';i++) why do we use c!='\n'

我们使用c!='\n'当用户输入 \n 时停止扫描输入字符(换行符)字符或者换句话说,当用户点击 enter 时关键。

why have we used s[i]='\0' in and i++; statement in if(c=='\n') condition

  • i++用于最后一次增加数组/字符串的索引值以适应终止'\0'空字符。

  • s[i]='\0'用于以空字符终止\结束字符串。这对于标记字符串结尾并在范围内打印字符串(最多'\0'字符)至关重要

关于c - c! 是什么意思? ='\n' 在 for 语句中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37852478/

相关文章:

c - epoll_wait返回怎么样?它是否对所请求的 I/O 的文件描述进行排序?

c - MPI 中的并行 for 循环?

c - 在结构中重新排列指针不会给我正确的结果

c - 识别使 double 方程 x + a == b 为真的最小和最大 x 的最快算法

c - 从C中的文件中读取字符串

c - 编写一段 C 代码,使编译器使用 SSE4.1 指令生成汇编代码

c - 设置文本图层的文本似乎会覆盖颜色。

c - 无法使用 CMake 编译 libwebsockets?

c - 构建 zip 压缩器/解压缩器以提高 C 技能

使用 fork 创建多个进程