Как я могу сравнить два массива символов? - PullRequest
0 голосов
/ 17 мая 2019

В моем коде у меня проблема с оператором if. Я чувствую, что код правильный. Получается значение ASCII для первого массива символов. Но значение ASCII второго массива символов остается 0. Помогите мне решить эту проблему.

#include<stdio.h>
#include<string.h>
void main()
{
  char team1[50],team2[50];
  int testcase,rounds,i=0,j,l,count=0,ascii1,ascii2;
  scanf("%d",&testcase);
  while(i<testcase)
  {
    scanf("%d",&rounds);
    scanf("%s",team2);
    scanf("%s",team1);
    printf("team2..%s\n",team2);

    for(l=0;l<rounds;l++)
    {
      for(j=l;j<rounds;j++); //<--- Don't do this...
      {
      ascii1=team1[l];
      ascii2=team2[j];
      if(ascii1==ascii2)   
      {
        count+=1;
      }
      printf("count..%d\n",count);
      }
    }
    printf("%d\n",count);
    i++;    
  }
}

Количество одинаковых символов должно отображаться. Например: Входной сигнал:

1
4
asdf
qwsa

Выход:

2

Ответы [ 2 ]

4 голосов
/ 17 мая 2019

У вас есть лишняя (неправильная) точка с запятой (;) после второй for, что делает его циклом над пустым блоком.Удалите его, и вы должны быть в порядке.

1 голос
/ 17 мая 2019
for(l=0;l<rounds;l++)
{
ascii1=team1[l];
for(j=l;j<rounds;j++)
{
ascii2=team2[j];
if(ascii1==ascii2)   
{
count+=1;
}
}
}

это будет работать только для заданного вами ввода (1 4 asdf qwsa), если вы меняете ввод, то код также изменится, как для ввода asdf и qsas

...