我不能为我的生活弄清楚为什么我的代码不能产生我需要的输出。要求是不使用任何功能。当我输入像" 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;
}
答案 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