c - 将用户输入添加到数组 (C)
问题描述
这里是 C 初学者。对不起这个蹩脚的问题。我编写了一个程序,它从用户那里获取十个整数,然后将它们添加到一个数组中。它可以工作,但由于某种原因,它会提示用户 13 次输入整数,并且在第二个提示中不包括“请输入整数:”部分。否则它仍然会创建数组并保存前十个数字。我只是无法让它停止要求整数 13 次。
int main () {
FILE fp*
int *arr = (int*) malloc (sizeof(int)*10);
for(int i=0;i<=10;i++)
{
printf("Enter an integer:");
scanf("%d", &arr[i]);
}
for (int i=0; i<11; i++)
{
printf("arr[%d] = %d: \n", 10-i-1, arr[10-i-1]);
}
return 0;
}
这是它当前的运行方式:
输入一个整数:1
输入一个整数:2
输入一个整数:3
输入一个整数:4
输入一个整数:5
输入一个整数:6
输入一个整数:7
输入一个整数:8
输入一个整数:9
输入一个整数:10
输入一个整数:11
输入一个整数:12
arr[9] = 10:
arr[8] = 9:
arr[7] = 8:
arr[6] = 7:
arr[5] = 6:
arr[4] = 5:
arr[3] = 4:
arr[2] = 3:
arr[1] = 2:
arr[0] = 1:
解决方案
在您的第一个循环中出现一个错误,可能导致堆栈损坏:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define ARRAY_LENGTH 10
int main(int argc, char *argv[]) {
int *arr = (int*) malloc (sizeof(int) * ARRAY_LENGTH);
for(int i = 0; i < ARRAY_LENGTH; i++)
{
printf("Enter an integer %d:", i);
scanf("%d", &arr[i]);
}
for (int i = ARRAY_LENGTH-1; i >= 0; i--)
{
printf("arr[%d] = %d: \n", i, arr[i]);
}
return(0);
}
输出:
$ gcc -Wall -o dummy dummy.c
$ ./dummy
Enter an integer 0:1
Enter an integer 1:2
Enter an integer 2:3
Enter an integer 3:4
Enter an integer 4:5
Enter an integer 5:6
Enter an integer 6:7
Enter an integer 7:8
Enter an integer 8:9
Enter an integer 9:10
arr[9] = 10:
arr[8] = 9:
arr[7] = 8:
arr[6] = 7:
arr[5] = 6:
arr[4] = 5:
arr[3] = 4:
arr[2] = 3:
arr[1] = 2:
arr[0] = 1:
推荐阅读
- rust - 如何创建最小 BinaryHeap?
- node.js - 如何设置从不同的数据库集合中检索的几个 res.locals?(Express, Mongo, EJS)
- angular - 如何使用 googlePhotosApi 将我的 Angular 应用程序连接到谷歌相册?
- unity3d - 使敌人能够攻击 2 个不同的物体
- javascript - 覆盖 jQuery 函数会丢失“this”范围
- java - 重定向外部 URL 以下载 Zip 文件
- c# - 如何消除静态背景噪音?
- javascript - 检查元素是否在加载和更改时包含特定文本
- javascript - OpenLayer Icon 用户自由变换
- ignite-ui - 扩展igTree中的特定节点时如何扩展节点的所有子节点?