【发布时间】:2015-12-27 00:32:19
【问题描述】:
这个程序的目的是打印尽可能多的输入文本(直到数组限制),但它应该显式返回输入文本的确切长度(数值)。
下面是我的代码:
#include <stdio.h>
#define MAXLINE 1000
int line_input(char array[], int maxlinelimit);
void copy(char toarray[], char fromarray[]);
int line_input(char s[], int limit)
{
char ch;
int i = 0;
for(; ((ch = getchar()) != EOF) && (ch != '\n'); ++i)
{
s[i] = ch;
}
if(ch == '\n')
{
s[i] = ch;
++i;
}
s[i] = '\0';
printf("%d\n", i);
return i;
}
void copy(char to[], char from[])
{
int i;
i = 0;
while ((to[i] = from[i]) != '\0')
++i;
}
int main()
{
int length;
length = 0;
int max;
max = 0;
char line[MAXLINE], longest[MAXLINE];
while((length = line_input(line, MAXLINE) > 0))
{
printf("%d\n%s\n", length, line);
if(length > max)
{
max = length;
copy(longest, line);
}
}
if(max > 0)
{
printf("\n\n%d is the size of the longest line\n", max);
printf("%s\n\n", longest);
}
return 0;
}
您会发现名为“line_input()”的用户定义函数由于某些我不知道的原因没有返回它应该返回的值。我认为没有任何警告是我没有希望解决的。
看看能不能解决。
P.S. - 输入文本是键盘上的任何字符串。不过,按“Enter”将开始一个新行。
【问题讨论】:
-
不使用参数
limit很奇怪。顺便说一句,我建议您首先将(length = line_input(line, MAXLINE) > 0)更改为(length = line_input(line, MAXLINE)) > 0,并让系统将返回值本身保存到length。 -
“...没有返回应得的值...”不如说明 1) 它返回的值 2) 预期的值 3) 输入那样有用。
标签: c arrays function return-value return-type