无法使用MINGW执行C程序

时间:2016-06-12 08:52:48

标签: 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;
}

但每当我将ans的数据类型转换为char*然后执行由命令创建的.exe文件时

gcc basic.c -o basic.exe

我无法看到输出,只是说 basic.exe已停止工作。 我不知道mingW中的安装是否存在问题或者是什么。

2 个答案:

答案 0 :(得分:3)

你不应该看到输出,程序会因为崩溃而崩溃 它不足以将ans更改为char *,您需要使用malloc:

为字符串分配一个位置
ans=malloc(sizeof(char) * 5);

而且printf应该是:

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

答案 1 :(得分:1)

对于没有内存问题,请考虑以下示例:

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

int main(){
    char * ans = NULL;
    // memory allocation
    ans = (char*) malloc(5 * sizeof(char));
    if( ans == NULL) // check memory
        return 1; // end of program
    printf("Enter yes or no : ");
    // reading input with length limitation
    scanf("%4s", ans);
    // string output   
    printf("You just entered %s\n", ans);
    return 0;
}

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