gpt4 book ai didi

c - 带有指针的 strcmp 在 C 中不起作用

转载 作者:太空狗 更新时间:2023-10-29 17:17:22 24 4
gpt4 key购买 nike

为什么这段代码不起作用。只是试图检查用户输入是否与密码相同

char *pass;

printf("Write the password: ");
scanf("%s", pass); // Because is a pointer the & is out ?


if( strcmp( pass , "acopio") == 0)

最佳答案

您实际上并没有分配任何空间来放置数据。定义一个指针只是定义了一个可以保存数据 block 地址的变量,它并没有分配数据 block 。

您有几个选择,从堆中分配动态内存以写入并使指针指向它。或者在堆栈上使用静态分配的内存并将其地址传递给您的调用。在这种情况下动态内存几乎没有什么好处(因为它是临时使用的而且很小)。如果你使用动态内存,你将有更多的工作要做——你必须确保在分配它时得到了你所要求的,并确保你在完成后将其归还并确保你不使用它在你把它还给它之后(在一个大的应用程序中很棘手,相信我!)这只是更多的工作,你似乎不需要额外的努力。

下面的示例也需要进行重要的错误检查,但可以为您提供总体思路。

例如

char *pass = malloc (SOMESIZE);

printf("Write the password: ");
scanf("%s", pass);


if( strcmp( pass , "acopio") == 0)

char pass[SOMESIZE];

printf("Write the password: ");
scanf("%s", pass);


if( strcmp( pass , "acopio") == 0)

关于c - 带有指针的 strcmp 在 C 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13253113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com