我试图扫描用户输入的字符串,然后在下一行打印它,但由于我是编码新手,我无法弄清楚为什么它没有显示输出!下面是代码-
main()
{
char* w1,w2,w3,e1,e2,e3;
printf("List of Words");
printf("\tMeanings");
scanf("%s",&w1);
printf("\n%s",w1);
getch();
}
我希望 w1 在“单词列表”下打印,但它没有显示任何输出。
最佳答案
这里
char* w1; /* uninitialized pointer */
scanf("%s",&w1); /* for w1 no memory is allocated. Also & is not required since w1 tends to points to some address */
w
是字符指针,指针需要指向某个有效的内存位置,但在您的情况下是w1
没有任何有效内存。
首先为w
分配内存,然后使用scanf()
将输入数据放入w
。例如
#define BUF_MAX_LENGTH 10
char *w1 = malloc(BUF_MAX_LENGTH);
if(w1 == NULL) {
/* @TODO error handling */
}
然后将数据扫描到w1
中。例如
scanf("%s", w1);
一旦用 w
完成使用,不要忘记释放动态分配的内存以避免内存泄漏。例如
free(w1);
旁注,请避免在同一声明中声明字符变量和字符指针变量,以提高代码的可读性。例如
char* w1,w2,w3,e1,e2,e3; /* mixed up */
可以
char* w1 = NULL; /* All pointer declaration */
char w2,w3,e1,e2,e3; /* All normal char variable */
关于c - 没有得到输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57343648/