c - 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;
}
这里在线编译错误:
我怎么解决这个问题?是关于代码还是编译器?
解决方案
所有字符串都是 char 数组,但并非所有 char 数组都是字符串。编译器不允许你在这里做赋值
scanf("%s", &str[i])
当您将数组传递给 C 中的函数时,它们会衰减为指向第一项的指针。所以这与scanf("%s", &str[i][0])
并且这会导致错误和未定义的行为相同
推荐阅读
- python - 如何使用 Matplotlib 绘制分布式点图?
- nestjs - 反射注入器,允许在nestjs中注入构造函数参数之外的依赖项
- mysql - 我可以在 MySQL Workbench 的模式面板中隐藏模式吗
- c# - List.Reverse() 在 C# 中没有任何效果
- python - bokeh: 检索 BasicTicker 的轴刻度间隔
- oauth - 在使用 Google API 时,credentials.JSON 有什么作用?
- grpc - gRPC 与 WebFlux(项目反应器)
- docker - 谷歌云计算实例无法按预期使用启动脚本
- python - 熊猫数据框:订单供应匹配
- docker - github工作流程:连接到docker容器时出现“ECONNREFUSED 127.0.0.1:***”错误