Использование strlen при расчете размера строки - PullRequest
0 голосов
/ 01 апреля 2020

Мне нужно вычислить размер строки, чтобы применить функцию (применяемая функция будет зависеть от размера доблести.)

Однако, как вы можете видеть в этом примере, я У меня возникли некоторые проблемы с использованием strlen в строке (в примере, который вы видите, я вставил 2 'valor', а данный strlen был равен 6).

Вот код, а рядом с ним изображение процесса вернулся.

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

int main() {
    char valor[5];
    char naipe[5];

    int c;

    int i = 0;
    do {
        c = getchar();
        if (((c > '0') && (c < '9')) || (c == 'K') || (c == 'Q') || (c == 'J') ||
            (c == 'A') || (c == 'T')) {
            valor[i] = c;
            continue;
        }
        if ((c > 'A') && (c < 'Z')) {
            naipe[i] = c;
            i++;
        }
    } while (c != '\n');

    printf("%ld", strlen(valor));

    return 0;
}

process box

1 Ответ

1 голос
/ 01 апреля 2020

у вас есть два массива, и вы должны использовать два счетчика для них, в противном случае вы, вероятно, пропустите некоторые элементы каждого массива.

также вы должны завершить char valor[5] и char naipe[5] с '\0'.

int main() {
  char valor[5];
  char naipe[5];

  int c;

  int i = 0,j=0;
  do {
    c = getchar();
    if (((c > '0') && (c < '9')) || (c == 'K') || (c == 'Q') || (c == 'J') ||
        (c == 'A') || (c == 'T')) {
      valor[j] = c;
      j++;
      continue;
    }
    if ((c > 'A') && (c < 'Z')) {
      naipe[i] = c;
      i++;
    }
  } while (c != '\n');
    valor[j] = '\0';//terminate first then print.
    printf("%ld", strlen(valor));
    naipe[i] = '\0';

  return 0;
}
...