【发布时间】:2018-12-20 09:35:14
【问题描述】:
我有这个代码:
main() {
printf("enter the number of names: ");
int n;
scanf("%d", &n);
getchar();
char *p;
p = malloc(n*LEN*sizeof(char));
char *name = malloc(LEN*sizeof(char));
int i;
for(i = 0; i < n; i++) {
gets(name);
strcpy((p + i), name);
printf("%s \n", (p + i));
strncpy(name, "", LEN);
}
for(i = 0; i < n; i++)
printf("%s\n", (p + i));
}
我无法打印指针 p 的值,这在第一个循环中是正确的,但在第二个循环中输出错误。(LEN 定义为15)。问题出在哪里?
【问题讨论】:
-
p 必须是 char** 类型
-
什么是
p + i? -
p = malloc(n * sizeof(char*));
-
这段代码的用途尚不清楚。把它分解成函数,理解起来会容易得多。
-
@Basile Starynkevitch,他的所有程序都很危险。