首页 > 解决方案 > dev c++和在线编译器有什么区别?

问题描述

我的代码在 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;

}

这里在线编译错误:

在此处输入图像描述

我怎么解决这个问题?是关于代码还是编译器?

标签: ccompiler-errors

解决方案


所有字符串都是 char 数组,但并非所有 char 数组都是字符串。编译器不允许你在这里做赋值

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

当您将数组传递给 C 中的函数时,它们会衰减为指向第一项的指针。所以这与scanf("%s", &str[i][0])并且这会导致错误和未定义的行为相同


推荐阅读