C 当程序到达某一行代码时就会冻结
我对c非常陌生,问题是当它达到某一行时,程序就会冻结。我不知道为什么以及如何修复它。我的代码有什么问题吗?还是终端坏了C 当程序到达某一行代码时就会冻结,c,C,我对c非常陌生,问题是当它达到某一行时,程序就会冻结。我不知道为什么以及如何修复它。我的代码有什么问题吗?还是终端坏了 #include <stdio.h> #include <time.h> #include <string.h> #include <stdlib.h> float cinta; float benci; float hasil; char nama [100]; char pacar [100]; char tanya;
#include <stdio.h>
#include <time.h>
#include <string.h>
#include <stdlib.h>
float cinta;
float benci;
float hasil;
char nama [100];
char pacar [100];
char tanya;
int main(){
printf("hallo, selamat datang di game seberapa cinta anda! \n");
printf("siapa nama anda? ");
scanf ("%s \n",nama);
printf ("Siapa nama pacar anda? ");
scanf ("%s \n",pacar);
printf ("Apakah anda siap untuk di kalkulasi? ");
scanf ("%c \n",tanya); // here's the line
if ((tanya == 'y')||(tanya == 'Y')) {
srand(time(0));
cinta = rand() %100 +1;
benci = rand() %100 +1;
hasil = cinta + benci;
printf ("selamat \n");
} else {
hasil = 0.0;
}
printf("Your love is at %f percent", hasil);
return 0;
}
#包括
#包括
#包括
#包括
浮心;
浮床;
浮子哈西尔;
查·纳马[100];
char-pacar[100];
查塔尼亚;
int main(){
printf(“您好,我是中国游戏玩家!\n”);
printf(“siapanamaanda?”);
scanf(“%s\n”,nama);
printf(“siapanamapacaranda?”);
scanf(“%s\n”,pacar);
printf(“在卡尔库拉西的和平协议?”);
scanf(“%c\n”,tanya);//这是一行
if((tanya='y')| |(tanya==''y')){
srand(时间(0));
cinta=rand()%100+1;
benci=rand()%100+1;
hasil=cinta+benci;
printf(“selamat\n”);
}否则{
hasil=0.0;
}
printf(“你的爱是%f%”,hasil);
返回0;
}
1)
此处'\n'忽略输入,即'\n',因此可以从所有扫描中删除'\n'
(二)
这里您必须通过引用传递,而不是
scanf ("%c",&tanya);
但在上述情况下,您不需要这样做,因为
name==&nama[0]
pacar==&pacar[0]
编辑:
如果您的代码不要求字符输入,则可以通过在scanf()之前添加此while循环来刷新输入缓冲区
scanf(“%c\n”,tanya);//这是一行
==>scanf(“%c”&tanya)代码>在编译器上激活警告:使用gcc-Wall
,您将得到:警告:格式“%c”要求参数类型为“char*”,但参数2的类型为“int”[-Wformat=]scanf(“%c\n”,tanya);//这是一条线< /代码> Frank Filler,既然你已经显示了这个问题,你自己是否认为这是一个简单的键入,或者你需要解释为什么这导致了观察到的错误行为?一些阅读需要被共享:留下尾随空白空间从<代码> SCANFF()/<代码>格式字符串(空白,标签和换行符)。通常,如果需要单字符输入,应在转换规范之前使用带空格的%c”
;这将跳过先前输入留下的空白(如换行符)。大多数转换自动跳过空白。三个不使用-%c
、%[…]
(扫描集)和%n
。或者只使用scanf(“%c”、&tanya)
。
scanf ("%c",&tanya);
name==&nama[0]
pacar==&pacar[0]
while ((c = getchar()) != '\n' && c != EOF);
scanf ("%c",&tanya);