gpt4 book ai didi

在 C 中创建用户长度定义的数组

转载 作者:行者123 更新时间:2023-11-30 16:38:01 26 4
gpt4 key购买 nike

我正在尝试创建一个具有可变起始长度的数组来获取字符串。代码应该计算单词数并调整数组的大小,但这只是一个测试,我在这里公开它,因为我想知道这是一个好的做法还是一个错误。如果有什么我应该知道的,或者我必须牢记的。

注意,我谈论的是 C,而不是 C++

#include <stdio.h>
int main()
{ int c,b,count;
scanf("%d",&c);
count=c+1;
getchar();
char a[count];
for ( c=b=0 ; c!=count && b!='\n' ; c++ )
{
b=getchar();
a[c]=b;
}
a[c]='\0';
printf("%s",a); printf("%d",c-1);
}

我不需要在执行时更改数组的大小。

我正在测试,我不太记得为什么第一次使用 c 变量而不是直接使用 count ,但我记得第一个 getchar 是刷新缓冲区,因为没有 getchar 它就无法工作。

我不知道为什么我需要放getchar。如果我删除 getchar 程序就会失败。

无论如何,程序运行良好。第一次运行时,它需要使用 scanf 得到一个数字,然后得到文本。

如果文本大于数组的大小,程序将忽略它。

数字是数组的大小。

我的问题是:

使用 a[variable] 来完成这项工作是一个很好的做法吗?

为什么我需要 getchar?

它是可移植的吗?我的意思是,我不知道某些系统或标准是否像某些旧的 C 编译器一样不接受这一点。

还有更好的方法吗?

最佳答案

It is a good practice do a[variable] to do this job?

这取决于某人的编译器配置。 It has been supported since C99.但是,由于没有充分的理由在如此简单的程序中使用它,因此请使用标准 malloc反而。 Here's an in-depth discussion of the topic.

Why I need the getchar?

您的终端中可能仍有一些输入被缓冲,并且第一个字符正在丢弃它。尝试将值打印到屏幕上看看它是什么,这可能有助于弄清楚。

It will be portable?

请参阅我对您第一个问题的回答。它可能适用于现代版本的 gcc,但例如它不适用于 Windows C(基本上仍然在 C89 上)。

关于在 C 中创建用户长度定义的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47623819/

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