gpt4 book ai didi

字符数组长度函数为 1、2、3、ENTER 返回 5,但在其他方面似乎没问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:25:56 25 4
gpt4 key购买 nike

我正在编写一个 C 程序来删除输入文本行末的空格。 sudo代码如下,

Read in each character into a character array
Loop backwards through the array
After encountering a '\n' remove any preceding spaces until a number/alphabetical character is found

为了做到这一点,我正在编写一个函数来返回数组的长度,因此程序知道在向后循环时从哪里开始。

这个长度函数似乎表现得很奇怪。

大部分时间它都有效。我在代码块中单击构建并运行。弹出一个控制台,我输入一些文本,然后按 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;
}

最佳答案

通过执行以下操作为 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)

关于字符数组长度函数为 1、2、3、ENTER 返回 5,但在其他方面似乎没问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51234542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com