В чем разница между dev c ++ и онлайн-компилятором? - PullRequest
0 голосов
/ 16 июня 2020

Мой код работает на dev c ++, но не на онлайн-компиляторе. В чем проблема?

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

int main()
{
    char str[5][20], t[20], instr[5][20];
    int i, j;
    printf("5 Adet Kelime Giriniz : \n\n");

    for(i=0; i<5; i++)
    {
            printf("%d . ",i+1);
            scanf("%s", &str[i]);
            strcpy(instr[1], strrev(str[i]));
    }

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

    for(i=1; i<5; i++)
    {
            for(j=1; j<5; j++)
            {
                    if(strcmp(str[j-1], str[j])>0)
                    {
                            strcpy(t, str[j-1]);
                            strcpy(str[j-1], str[j]);
                            strcpy(str[j], t);
                    }
            }
    }

    printf("\n Alfabetik Siralama : \n\n");
    int counter=1;
    for(i=4; i>-1; i--)
    {
            printf("%d . ",counter);
            printf("%s",str[i]);
            printf("\n");
            counter++;
    }
    return 0;

}

Здесь ошибка онлайн-компилятора:

введите описание изображения здесь

Как можно Решаю эту проблему? Это про код или компилятор?

1 Ответ

0 голосов
/ 16 июня 2020

все строки являются массивами символов, но не все массивы символов являются строками. компилятор не позволяет вам выполнять присвоение здесь

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

Когда вы передаете массивы функциям в C, они превращаются в указатели на первый элемент. так что это то же самое, что scanf("%s", &str[i][0]), и это вызывает ошибки и неопределенное поведение

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