我正在编写一个C程序来删除输入文本行尾的空白。 sudo代码如下,
将每个字符读入一个字符数组
向后循环遍历数组
遇到'\ n'后,请删除所有前面的空格,直到找到数字/字母字符
为此,我正在编写一个返回数组长度的函数,因此程序知道向后循环时从哪里开始。
这个长度函数似乎表现得很奇怪。
大部分时间都可以使用。我单击在代码块中运行并运行。弹出一个控制台,我输入一些文本,然后按CTR + D,并返回一个数字,表示输入到控制台中的所有字符的长度。
如果我输入123
,程序将返回3,这很有意义。如果我输入12 ENTER
,程序将返回3,这与C语言中的1,2,'\n'
同样有意义。
但是由于某些原因,如果我输入123 ENTER
,则程序返回5,而我期望是4(1,2,3,'\n'
)。
据我所知,只有三个字符和换行符才是这种情况。
知道为什么吗?
我的代码:
#include <stdio.h>
#define MAX 1000
int array_length(char array[]);
int main()
{
int i, c;
char condensed_array[MAX];
i = 0;
while((c=getchar()) != EOF){
condensed_array[i] = c;
++i;
}
printf("\n%d", array_length(condensed_array));
return 0;
}
int array_length(char s[])
{
int j;
j=0;
while(s[j] != '\0')
++j;
return j;
}
答案 0 :(得分:2)
通过以下操作为array_length
提供战斗机会:
while((c=getchar()) != EOF){
condensed_array[i] = c;
++i;
}
condensed_array[i] = 0;
将零添加到数组的末尾!
我想array_length
while(s[j] != '\0')
应该是
while(s[j] != 0)