【发布时间】:2021-09-28 13:54:40
【问题描述】:
我需要扫描n 数字,然后用以下扫描的n 数字填充一个数组。我必须在函数中同时使用n 和数组输入,以及使用动态内存。
void input(int* buff, int* n);
int main() {
int* data = NULL;
int n;
input(data, &n);
for (int i = 0; i < n; ++i) {
printf("%d ", data[i]);
}
return 0;
}
void input(int* buff, int *n) {
if (scanf("%d", n) == 1 && getchar() == '\n') {
if (*n <= 0) {
error = 1;
}
}
if (error == 0) {
buff = (int*)calloc(*n, sizeof(int));
if (buff == NULL) {
error = 1;
}
}
if (error == 0) {
int count = 0;
int p;
for (int i = 0; i < *n; i++) {
if (1 == scanf("%d", &p)) {
if (count < *n) {
*(buff + count) = p;
count++;
}
}
}
for (int i = 0; i < *n; i++) {
printf("%d, ", *(buff + i));
}
}
我没有在第一个 for 中插入我的程序的所有逻辑,因为它并不真正重要。
最后一个 for 打印正确的元素,但是我有一个关于空指针的警告。
当我返回main 并尝试打印时,我遇到了关于禁止读取访问的错误。
我哪里做错了?
【问题讨论】: