c - 没有得到输出

标签 c

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

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/

相关文章:

c - 如何将 C 宏/内联函数与变量函数名一起使用?

c - 如何获得 sscanf_s 在上次操作中读取了多少字节?

C 字符串传递

c - 我收到错误请帮助我解决此错误..我在下面编写了代码

连接 2 个字符串并返回一个新指针

c - 数组初始化的奇怪值

c - C 中的结构指针和内存分配

c - 如何检查 256i(16 位) vector 以了解它是否包含大于零的元素?

C程序将包含0值的行和列转换为零

c - 从整数到字符数组的数字和打印