c - 在c程序中添加0作为最后一个值

标签 c arrays

我正在用 c 语言编写一个小程序,一切都很完美,但在一个进程中我必须向数组分配一些值,但我希望最后一个值自动为 0

printf("cantidad de valores codificados a ingresar "); /*amount of values to enter*/
scanf("%d",&l);

printf("\ningrese los valores a decodificar: "); /*entering values*/

for(i=0;i<l;++i) {
    scanf("\n%d ",&c[i]);
}

最佳答案

您只需将 0 分配给 scanf 读取到的元素之后即可:

for(i=0;i<l;++i) {
    scanf("%d",&c[i]);
}
c[i] = 0;

您已在循环之前声明了 i,所以没问题。确保i 不大于数组c 的大小。因此,假设 c 定义为:

int c[100];

读入 l 的值后,您应该检查它是否不大于数组的大小,如下所示:

scanf("%d",&l);
if (l + 1 > sizeof(c) / sizeof(int)) // one extra for the 0
{
  fprintf(stderr, "Too many values, I don't have this much space...");
  exit(1);
}

但是动态分配数组c会更好:

scanf("%d",&l);
int* c = (int*) malloc(sizeof(int) * (l + 1));

关于c - 在c程序中添加0作为最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16038257/

相关文章:

c - volatile 关键字如何影响静态常量数组?

c - 如何对两个不同的方程使用一个函数两次?

c++ - 在 C/C++ 中创建和发送原始数据包

c - 是 memset(&ptr, 0, sizeof(ptr));与 ptr=NULL 相同;?

Java JList 不更新

javascript - 从后到前显示列表

c - 使用 ffmpeg 将文件从一种格式转换为另一种格式

java CSV文件到数组

arrays - 使用 mongoose 在对象数组中插入唯一的对象

arrays - Delphi - 检查元素是否在 TArray<string> 中存在两次