c++ - 指针和scanf有问题吗?
问题描述
在代码中,我在scanf
运行时遇到Check Array函数中输入地址的问题,输入值失败,立即结束程序。我该如何解决?
代码:
bool CheckArray(int** arr, int index)
{
fflush(stdin);
char temp;
printf("\ntest0 \n");
if (scanf("%d%c", &(arr)[index], &temp) == 2) { // input
printf("\ntest 1 \n");
if (temp == '\n')
printf("\ntest 2 \n");
return true;
}
return false;
}
void addValue(int** arr, int& size)
{
fflush(stdin);
size++;
arr = (int**)realloc(arr, (size) * sizeof(int*));
printf("Input number to array:");
while (!CheckArray(arr, size - 1)) {
printf("Invaild a value: ");
};
//scanf("%d",arr+(size-1));
printf("Number of array: %d", arr[size - 1]);
}
bool CheckMenu(int& number, int min, int max)
{
fflush(stdin);
char temp;
printf("Input menu:\n");
if (scanf("%d%c", &number, &temp) == 2) {
if ((temp == '\n') && ((number >= min) && (number <= max)))
return true;
}
return false;
}
void menu(int** arr, int& size)
{ // menu of programing
int number;
while (true) {
if (number == 6)
break;
printf("----Chuong Trinh----\n");
printf("1. Add a value\n");
printf("2. Search a value\n");
printf("3. Print out array \n");
printf("4. Print out values in range inputted min and max values, inclusively\n");
printf("5. Sort the array in ascending order\n");
printf("0. Exit\n\n");
while (!CheckMenu(number, 1, 6)) {
printf("invail \n");
}
switch (number) {
case 1:
addValue(arr, size);
break;
}
}
}
int main()
{
int size = 0;
int* arr;
arr = (int*)malloc(size * sizeof(int)); // malloc memory
menu(&arr, size); // menu
free(arr); // free the memory
return 0; // return
}
解决方案
推荐阅读
- php - 将多维数组转换为字符串并推送到新数组
- linux - Linux 配置文件中注释掉的行
- python - 使用 skimage.color.rgb2lab 将 RGB 转换为 Lab
- javascript - 如何在 React-native 中实现优雅的登录?
- python - plotly.plot 不会绘制所有数据框
- javascript - 是否可以创建具有动态状态的减速器?
- angular - 选择要在 Highcharts 上显示的数据
- date - 无法从时间戳截断日期日期
- javascript - HTML5:单击时从文件加载变化的图像
- laravel - 修改重置密码链接而不修改 laravel 中的供应商文件