【发布时间】:2013-11-15 03:49:18
【问题描述】:
这段代码有什么问题,它编译时没有错误,但是当我运行它时,我得到一个总线错误
#include <wchar.h>
#include <stdio.h>
int main(void)
{
char *a = "yes";
char *b = "no";
char *c = "";
puts ("\ntype yes or no for selection\n");
puts ("do you like icecream\n");
scanf("%c", &*c);
if (*c == *a){
puts("you win $1000000000");
}
if (*c == *b){
puts("you loose $50");
}
return 0;
}
【问题讨论】:
-
提示:char *c = "";其次是 scanf("%c", &*c);这是非常基本的东西。
-
1) 要输入字符串“是”或“否”,请使用
%s格式说明符。 2) 比较字符串使用strcmp库函数,不能仅通过==比较。 3)分配一些内存给c指针。 -
@0xF1: 如果
c指向可修改的内存,他可以使用%c。他可以如图所示比较字符串的第一个字符,但他应该涵盖输入既不是y也不是n的情况。 -
@JonathanLeffler:对,他也可以那样做。
-
请编译所有警告和调试信息(即
gcc -Wall -g prog.c -o myprog)并学习如何使用调试器(使用gdb myprog)