C语言 扫描输入到malloc指针不工作



我有这个代码,但它不工作。无论我输入什么,它都不打印。

#include <stdio.h>
#include <stdlib.h>

char *askFile()
{
printf("Enter a file: ");
char *file = malloc(512 * sizeof(char));
scanf("%s", file);
return file;
}

int main()
{
char *file = askFile();
printf("%s", *file);

return 0;
}

为什么不工作?

正如@Someprogrammerdude在评论中所说的,错误是:

printf("%s", *file);

应该是:

printf("%s", file);

由于*file指向第一个元素。

关键的错误是没有使用一个启用所有警告的好的编译器。一个良好的编译器应该对指定符类型不匹配发出警告。

char *file =...;
printf("%s", *file); // Warning expected.

节省时间。启用所有编译器警告。

最新更新