没有输出

时间:2019-08-04 03:49:14

标签: c

我试图扫描用户输入的字符串,然后在下一行中打印它,但是由于我是编码新手,所以我无法弄清楚为什么它没有显示输出!下面是代码-

main()
{
    char* w1,w2,w3,e1,e2,e3;
    printf("List of Words");
    printf("\tMeanings");
    scanf("%s",&w1);
    printf("\n%s",w1);
    getch();
}

我希望w1打印在“单词列表”下,但未显示任何输出。

1 个答案:

答案 0 :(得分:2)

这里

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分配内存,然后使用w将输入数据放入scanf()。对于例如

#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 */