предупреждение: формат "% s" ожидает аргумент типа "char *", но аргумент 2 имеет тип "char" - PullRequest
0 голосов
/ 24 мая 2018

Прежде всего, этот код (PenaltyShootout.c) используется для подсчета количества единиц в данной строке, которым предшествует 2. «0» - нет цели, «1» - цель, «2» - фол.

Проблема: PenatltyShootout.exe перестал работать.

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

int main()
{
    int T,i;
    char str[100][500];
    int n=0;

Нет.из тестовых случаев нет.различных строк для ввода, чтобы проверить работу кода.

    do
    {
        printf("Enter the number of Test cases(must be between 1 and 100):\n");
        scanf("%d",&T);
    }while(T>100);

Я попытался заменить str [i] [500] на (char *) str [i] [500], и предупреждение исчезло, но PenaltyShootout.exe перестал работать.

    for(i=0; i<T; i++)
    {
        printf("Enter the test case %d\n",i);
        scanf("%s",str[i][500]);
    }

    for(i=0; i<T; i++)
    {
        for(int j=0; j<strlen(str[i])-1; j++)
        { 
            if((str[i][j]=='2')&&(str[i][j+1]=='1')==1)
            {
                n++;
            }
        }

Это должно вывести количество голов, сделанных после фола.

        printf("%d\n",n);
    }

   return 0;
}

1 Ответ

0 голосов
/ 24 мая 2018

Ваш вызов scanf("%s", str[i][500]); читает строку ("%s") в символ (str[i][500]).

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

scanf("%c", &str[i][500]);

Что "%c" позволяет scanf() знать, что вам нужна одна буква, и что & говорит ему использовать адрес символа в памяти (str[i][500],501-ая позиция в str[i] (когда у вас есть только 500 выделенных)) для того, где ее разместить.

Если вы пытаетесь прочитать строку (то есть слово или предложение), вам нужно переключить ее большенапример:

scanf("%s", str[i]);

Здесь вы теперь помещаете отсканированную строку в i -й строковый буфер в str (для которого вы уже выделили 500 char с).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...