无法使用MINGW执行C程序

无法使用MINGW执行C程序,c,pointers,mingw,C,Pointers,Mingw,我甚至不能通过mingW开发环境执行一个简单的c代码。这个代码很好用 #include<stdio.h> int main(){ char ans[5]; printf("Enter yes or no"); scanf("%s", ans); printf("You just entered", ans); return 0; } 我看不到输出,它只是说basic.exe已停止工作。 我不知道mingW中的安装是否存在一些问题或其他问

我甚至不能通过mingW开发环境执行一个简单的c代码。这个代码很好用

#include<stdio.h>
int main(){
    char ans[5];
    printf("Enter yes or no");
    scanf("%s", ans);   
    printf("You just entered", ans);
    return 0;
}
我看不到输出,它只是说basic.exe已停止工作
我不知道mingW中的安装是否存在一些问题或其他问题。

您不应该看到输出,程序应该会崩溃,因为 仅将ans更改为char*是不够的,您需要使用malloc为字符串分配一个位置:

ans=malloc(sizeof(char) * 5);
而且printf应该是:

printf("....%s",ans);

对内存没有问题考虑下面的例子:

#包括
#包括
int main(){
char*ans=NULL;
//内存分配
ans=(char*)malloc(5*sizeof(char));
if(ans==NULL)//检查内存
返回1;//程序结束
printf(“输入是或否:”);
//带长度限制的读取输入
scanf(“%4s”,ans);
//字符串输出
printf(“您刚刚输入了%s\n”,ans);
返回0;
}

如果输入的字符超过4个,则将跳过第5个字符和其他字符(保留在输入缓冲区中)。

提供导致执行失败的代码示例(完整代码,如果大小相同)。这是我刚刚将
char[5]ans
更改为
char*ans
。对于case
char*ans见下面海莫维茨博士的答案。问题是:指针指向“nothing”…和
printf(“您刚刚输入”,ans)也不会执行预期的操作。
%s
在哪里?代码中有%s,我忘了把它粘贴在这里,顺便说一句,它现在可以工作了
printf("....%s",ans);