c语言字符串赋值问题
int num;
char **p;
char temp;
puts("how many words do you wish to enter? ");
scanf("%d", &num);
printf("enter %d words now:\n",num);
p = (char **)malloc(num * sizeof(char *));
for (int i = 0; i < num; i++)
{
scanf("%s", temp);
*p = (char *)malloc((strlen(temp)+1) * sizeof(char));
for (int a = 0; a < strlen(temp); a++)
{
p = temp;
}
p = '\0';
//strcpy(*p, temp);
}
puts("here are your words:");
for (int i = 0; i < num; i++)
{
puts(p);
}
为什么用循环给地址一个一个赋值字符时报错,但是把赋值部分改用strcpy()函数可以正常运行?
希望哥哥们教一下,谢谢 11行,*p 改为 p 我记得在C语言中字符串与字符数组不是同一个东西{:301_1008:} bp946 发表于 2020-4-12 18:15
11行,*p 改为 p
这样正确了,谢啦。
但是我再问一下,如果*p不改,在下面加个p++;来移动指针可以吗? 看看就走 发表于 2020-4-13 10:54
这样正确了,谢啦。
但是我再问一下,如果*p不改,在下面加个p++;来移动指针可以吗?
可以,要加个临时指针保存原来的p地址,直接加p的位置就移动了
页:
[1]