接收用户输入并将其存储在C

时间:2016-02-19 16:34:09

标签: c arrays string

我不能为我的生活弄清楚为什么我的代码不能产生我需要的输出。要求是不使用任何功能。当我输入像" text"这样的文本行时,生成的数组是" tex"切掉对我来说毫无意义的最后一封信。

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

int read_input( char line_of_text[] )
{
        int index = 0;
        char ch;
//      if(!line_of_text[0])
//              return index;
        for(ch = getchar(); ch != '\n' && ch != '\0'; ch = getchar()){
                if(ch == EOF){ //clear string and return EOF
                        line_of_text[0] = '\0';
                        return EOF;
                }
                line_of_text[index++] = ch;

        }
        line_of_text[++index] = '\0';
        return index;
}

1 个答案:

答案 0 :(得分:1)

应用所有评论并清理逻辑

注意垂直和水平间距如何使代码更容易阅读/理解

请注意,这些陈述不使用任何副作用&#39;处理&#39;指数&#39;的增量变量

int read_input( int max_chars, char line_of_text[] )
{
    int index = 0;
    int ch = 0; // getchar() returns an int, not a char

    // Note: initialization of 'index' handled in declaration
    // Note: '-1' to leave room for NUL termination char
    for( ; index < (max_chars-1); index++ )
    {
        ch = getchar();

        // Note: place literal on left so compiler can catch  `=` error
        if( EOF == ch || '\n' == ch || '\0' == ch )
        {
            break;
        }

        // acceptable char so place into buffer
        line_of_text[index] = ch;
    }

    // when done, terminate the char string
    line_of_text[index] = '\0';

    return index;
} // end function: read_input