char*是否已经包含本例中第一个char的地址?
当我们做scanf时,第二个参数是真实的地址吗?
#include <stdio.h>
int main(void)
{
char *s;
printf("s: ");
scanf("%s", s);
printf("s: %s\n", s);
}发布于 2021-02-25 01:26:34
不是的,而且试图用对scanf("%s", s)的调用来填充它是未定义的行为,因为指针没有指向分配的内存。
您可以通过分配s来初始化它:
s = malloc(100);
if(NULL == s)
{
goto cleanup; // one of the few valid uses of goto in C
}
if(scanf("%99s", s) != 1)
{
// scanf failed to populate 's'
goto cleanup;
}
printf("Hello %s\n", s);
cleanup:
free(s);
s = NULL;https://stackoverflow.com/questions/66355789
复制相似问题