繁体   English   中英

检查命令行中的字符串

[英]Checking a command line for string

因此,该项目的目标是在命令行中询问选民的姓名。 然后它应该提示用户投票的人数。 在提示用户投票后(提示用户投票的次数应等于选民人数),如果输入了命令行中未提及的名称,则应显示无效并重新提示用户。 我不确定我做错了什么。

这是终端外观的示例。

$ ./plurality Alice Bob
Number of voters: 3
Vote: Alice
Vote: Charlie
Invalid vote.
Vote: Alice
Alice

这是我的代码

#include <cs50.h>
#include <stdio.h>
#include <string.h>

int x;
int main (int argc, string argv[]) //command line for candidates
{
 int num_vote = get_int("Number of voters: "); //number of voters
 string vote;
 // loop that asks for who to vote for, if name matches argv[] move on, else check through the rest of argv{}
 while ( x < num_vote)
 {
 vote = get_string("Vote: ");
    if (strcmp(argv[x],vote))
    {
     x++;
    }
   //checks all of argv, if nothing found prompts user again and checks again
    else if ((x + 1) == num_vote && (!strcmp(argv[x],vote)))
    {
    printf("Invalid vote.");
    num_vote -= 1;
    }


 }
}

如果我很好地理解了这个问题,那么您就是在混淆选民人数和投票人数。

在给定的循环中,您使用变量 x 循环以获取用户的输入,而在if (strcmp(argv[x],vote))行中,您正在使用它来访问 argv 数组。

因此,首先您应该通过循环 throw argv 来计算投票者的数量,然后在每次迭代中对其进行循环以查明其中是否包含给予者姓名。

这是我的工作 cSharp 代码,用于在输入错误的情况下重新提示希望它会有所帮助

int age;
            Console.WriteLine("\n Enter yhour age");
            
            while (!int.TryParse(Console.ReadLine(), out age))
            {
                Console.WriteLine
                    ("You have entered an invalid number please enter again");
                continue;
            }
            {
                Console.WriteLine
                    ("yourage is " + (age));
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM