我正在努力解决指针及其分配问题。 我想了解我的分配是否正确,否则应该如何进行。 另外,我收到有关 fgets 和 put 函数的警告,但我认为这与错误的分配有关。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
const int n = 30, m = 30;
struct employer {
char *name[3][1];
char *pass[n][m];
int *ID;
};
int main() {
struct employer admin;
i = 0;
for (i = 0; i < 3; i++) {
admin.name[i][1] = (char*)calloc(1, n);
}
for (i = 0; i < 3; i++) {
fgets(admin.name[i][1], n, stdin);
puts(admin.name[i][1]);
}
return 0;
}
以下是我收到的警告:
它们分别与我分配的行有关,即 fgets fcn 行和 puts fcn 行。 你能告诉我哪里错了吗?
您的代码中有两个错误。首先,您在
i
中使用了 main
但未声明它。其次,您要寻址长度为 1
的数组中的索引 1
。由于数组从 0
开始索引,因此您应该使用索引 0
。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
const int n = 30, m = 30;
struct employer {
char *name[3][1];
char *pass[n][m];
int *ID;
};
int main() {
struct employer admin;
size_t i = 0;
for (i = 0; i < 3; i++) {
admin.name[i][0] = (char*)calloc(1, n);
}
for (i = 0; i < 3; i++) {
fgets(admin.name[i][0], n, stdin);
puts(admin.name[i][0]);
}
return 0;
}