C 使用FGET存储字符指针程序崩溃

C 使用FGET存储字符指针程序崩溃,c,arrays,pointers,fgets,C,Arrays,Pointers,Fgets,为什么这会毁了我的程序?似乎我不能在FGET中使用字符指针,但我可以使用数组,所以这毫无意义 似乎我不能在FGET中使用字符指针,但我可以使用数组 不可以,只要在将指针传递到fgets()之前为指针分配内存,就可以同时使用这两种方法 在本例中,使用指针 char *p; fgets(p,10,stdin); p是单元化的,指向某个无效的任意内存位置。您需要为p分配适当的内存,然后才能通过p向内存位置指针读/写内容 似乎我不能在FGET中使用字符指针,但我可以使用数组 不可以,只要在将指针传递到

为什么这会毁了我的程序?似乎我不能在FGET中使用字符指针,但我可以使用数组,所以这毫无意义

似乎我不能在FGET中使用字符指针,但我可以使用数组

不可以,只要在将指针传递到
fgets()
之前为指针分配内存,就可以同时使用这两种方法

在本例中,使用指针

char *p;
fgets(p,10,stdin);
p
是单元化的,指向某个无效的任意内存位置。您需要为
p
分配适当的内存,然后才能通过
p
向内存位置指针读/写内容

似乎我不能在FGET中使用字符指针,但我可以使用数组

不可以,只要在将指针传递到
fgets()
之前为指针分配内存,就可以同时使用这两种方法

在本例中,使用指针

char *p;
fgets(p,10,stdin);


p
是单元化的,指向某个无效的任意内存位置。您需要为
p
分配适当的内存,然后才能通过
p
向内存位置指针读/写内容

字符指针不是数组。首先,它们必须指向某个有效的东西,然后才能取消引用它们,例如,尝试通过它们进行写入。真的吗?我猜我的理解力很弱。我读到数组只是指针。如果你在网站上读到,删除书签和/或历史记录。如果是纸质的,就用汽油和火柴。我们不需要全球变暖了。碎纸机就可以了Pchar指针不是数组。首先,它们必须指向某个有效的对象,然后才能取消引用它们,例如,尝试通过它们进行写入。真的吗?我猜我的理解力很弱。我读到数组只是指针。如果你在网站上读到,删除书签和/或历史记录。如果是纸质的,就用汽油和火柴。我们不需要全球变暖了。碎纸机就可以了如果我不知道用户输入的长度,我知道我给p的内存是多少吗?@qaispak你一定知道长度,否则你认为数组是如何工作的?对不起,我的意思是:“数组(当我知道长度时),我可以得到输入,但我想知道如果我不知道长度如何得到它…我假设是在使用指针时得到的(但我错了,因为我们也需要定义指针的长度)@qaispak yes,
fgets()
不会将内存分配给指针。在传递指针之前,您需要分配内存。是的,我知道,但我如何知道要分配多少内存?如果我不知道用户输入的长度,我如何知道我给p多少内存?@qaispak您必须知道长度,否则您建议数组如何工作?那么rry,我的意思是:“数组(当我知道长度时),我可以得到输入,但如果我不知道长度,我想知道如何得到它。。。我假设当我们使用指针时(但我错了,因为我们还需要定义指针的长度)@qaispak是的,
fgets()
不会为指针分配内存。您需要在传递指针之前分配内存。是的,我理解,但我如何知道要分配多少内存?