我无法通过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中的安装是否存在问题或者是什么。
答案 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个字符和其他字符(在输入缓冲区中保留)。