【问题标题】:Comparing String in C and each element is a pointer to a string比较C中的String,每个元素都是指向字符串的指针
【发布时间】:2014-10-03 23:04:42
【问题描述】:

对于下面的代码,如果我输入数字 4 并且 will、ed、bob、bill,我希望输入为 ryan。基本上输出是名称中不是输入之一的那个。它应该是唯一的名字。

但我的代码没有得到任何输出。它确实编译。 谁能帮我解决这个问题?非常感谢您的帮助。提前致谢。

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

 int main(void)

{
int input_num=0;
int isWill = 0;
int isBob  = 0;
int isBill = 0;
int isRyan = 0;
int isEd = 0;
int i=0;

scanf("%d", input_num);
printf("%d", input_num);

for(i;i<input_num;i++)
{
    char tmp[1000000];
    scanf("%s", tmp);

    if( strcmp( tmp, "Will" ) == 0 )
        isWill = 1;
    else if( strcmp( tmp, "Bob" ) == 0 )
        isBob = 1;
    else if( strcmp( tmp, "Bill" ) == 0 )
        isBill = 1;
    else if( strcmp( tmp, "Ryan" ) == 0 )
        isRyan = 1;
    else if( strcmp( tmp, "Ed" ) == 0 )
        isEd = 1;

}
//end of input

char *colors[5];

colors[0] = "Will";
    printf("Will\n");
colors[1] = "Bob";
    printf("Bob\n");
colors[2] = "Bill";
    printf("Bill\n");
colors[3] = "Ryan";
    printf("Ryan\n");
colors[4] = "Ed";
    printf("Ed\n");

return 0;

}

【问题讨论】:

    标签: c string strcmp


    【解决方案1】:

    一些错误是:
    scanf("%d", input_num);:应该是scanf("%d", &amp;input_num);
    不是错误但没用:for(i;i&lt;input_num;i++):为什么会有i:应该是for(;i&lt;input_num;i++)

    如果我正确理解了您的问题,您希望输出未写入的名称,因此循环之后的所有内容对于此问题都是错误的
    你应该看到is_something中的哪一个等于0并打印出来

    【讨论】:

      【解决方案2】:

      这里有一个解决方案。

      如果我输入 1 和 Sally,我会得到所有 5 个人,对吗?

      #include <stdio.h>
      #include <string.h>
      
      int
      main (void)
      {
          int input_num = 0;
          enum { WILL = 1, BOB = 2, BILL = 4, RYAN = 8, ED = 16 };
          int all = WILL + BOB + BILL + RYAN + ED;
      
          scanf ("%d", &input_num);
      
          for (int i = 0; i < input_num; i++) {
              char tmp[20];
      
              scanf ("%s", tmp);
      
              if (strcmp (tmp, "Will") == 0)
                  all -= WILL;
              else if (strcmp (tmp, "Bob") == 0)
                  all -= BOB;
              else if (strcmp (tmp, "Bill") == 0)
                  all -= BILL;
              else if (strcmp (tmp, "Ryan") == 0)
                  all -= RYAN;
              else if (strcmp (tmp, "Ed") == 0)
                  all -= ED;
          }
      
          if (all & WILL) {
              puts ("Will");
          }
      
          if (all & BOB) {
              puts ("Bob");
          }
      
          if (all & BILL) {
              puts ("Bill");
          }
      
          if (all & RYAN) {
              puts ("Ryan");
          }
      
          if (all & ED) {
              puts ("Ed");
          }
      
          return 0;
      }
      

      【讨论】:

      • 这不是我想要的,但非常感谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-17
      • 2021-04-02
      • 1970-01-01
      • 2016-08-10
      • 2011-04-12
      • 1970-01-01
      • 2021-10-27
      相关资源
      最近更新 更多