我是编程新手,我看了一个c语言的教程(大约3个小时),我立即编写了这段代码。现在一切正常,但是我想创建某种循环,我将尽力解释我想要的。
这是我写的代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *characterName;
char *yes_no;
characterName = malloc(sizeof(char));
yes_no = malloc(sizeof(char));
printf("Enter you name: ");
scanf("%s", characterName);
printf("Are you sure[Yes/No]: ");
scanf("%s", yes_no);
if(strcmp(yes_no, "Yes") == 0 || strcmp(yes_no, "yes") == 0)
{
printf("Your name is %s", characterName);
}
else if(strcmp(yes_no, "No") == 0 || strcmp(yes_no, "no") == 0)
{
printf("Try again!");
}
else
{
printf("Unknown command!");
}
return 0;
}
它的作用是基本上要求您输入名称,然后进行确认,如果您输入“是”或“是”,它将打印出您的名字,如果您输入“否”或“否”,则将再次打印,如果您输入除了“是/是”或“否/否”以外的其他内容,它将打印未知命令。现在,我想知道的是如何制作一个循环,除非我输入“是”,否则该循环将一遍又一遍地重复。 就像我输入了no或未知命令一样,我希望它再次要求我输入我的名字。希望您能理解我要做什么,并为我仍在学习:D的英语不好而感到抱歉。
答案 0 :(得分:4)
就像编程中的大多数事情一样,有很多方法可以完成您要问的事情。
一种方法是引入一个名为yes_entered或类似名称的新变量,该变量将跟踪用户是否输入了yes。然后,在if语句中(您检查是否输入了yes)中,可以将此变量设置为true。要将其放入循环中,可以将要重复的代码放在while(!yes_entered){
循环中。
另一件事,这些行:
characterName = malloc(sizeof(char));
yes_no = malloc(sizeof(char));
会给您带来麻烦。您正在将两个char数组分配为一个char的大小。对于这种情况,您可能应该考虑选择最大字符长度,然后将这两个变量设为静态char数组。像这样:
char characterName[MAX_NAME_LENGTH] ;
char yes_no[MAX_CONF_LENGTH];
答案 1 :(得分:3)
好吧,您在那里收到一个关于strcmp的隐式声明警告,缺少#include <string.h>
,但是代码编译的很好,并且到目前为止它已经做了。
现在,我们向其添加循环:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char *characterName;
char *yes_no;
characterName = malloc(sizeof(char));
yes_no = malloc(sizeof(char));
printf("Enter you name: ");
scanf("%s", characterName);
while(1) {
printf("Are you sure[Yes/No]: ");
scanf("%s", yes_no);
if(strcmp(yes_no, "Yes") == 0 || strcmp(yes_no, "yes") == 0){
printf("Your name is %s", characterName);
break;
}
else if(strcmp(yes_no, "No") == 0 || strcmp(yes_no, "no") == 0){
printf("Try again!");
} else {
printf("Unknown command!");
}
}
return 0;
}
while(1) { .. }
中的代码始终为true(1为true),直到您键入“ yes”并点击break;
。