c - 我尝试创建以相反顺序显示其给定参数的代码,但为什么它的代码告诉我分段错误?
问题描述
如您所见,我尝试创建以相反顺序显示其给定参数的代码。但它一直给我分段错误。我试图并试图弄清楚,但不明白为什么。请给我善意的建议和解释。谢谢你们
#include <unistd.h>
void ft_putchar(char c)
{
write(1, &c, 1);
}
int main(int argc, char *argv[])
{
int i;
int j;
i = argc;
while(i > 0)
{
j = 0;
while(argv[i][j] != '\0')
{
ft_putchar(argv[i][j]);
j++;
}
i--;
ft_putchar('\n');
}
return(0);
}
解决方案
在下面的代码行中:
while(argv[i][j] != '\0')
何时i == argc
,您将访问一个空指针并进一步索引这是未定义的行为,在这种情况下会导致分段错误。
指向指向以 null 结尾的多字节字符串的指针数组的指针,这些字符串表示从执行环境(
argv[0]
通过argv[argc-1]
)传递给程序的参数。的值argv[argc]
保证为0。
推荐阅读
- android - 在 Android 上使用 Picasso 加载 Google 静态地图
- jquery - jquery - 点击事件打破视差
- r - r- emojifont 包的 font-awesome 命令在 Windows 10 中不显示图标
- reactjs - 如何使用 Redux 实现 React-navigation?
- r - 使用 R data.table 计算所有变量组合和 df 的不同计数
- appium - Android 模拟器 - 登录应用程序后无法执行操作
- python-3.x - python3 和 matplotlib:更改锚定文本的背景颜色
- python - CV2:尝试拍照时出现“[WARN:0] terminating async callback”
- java - AssertEquals 为两个相同的对象返回 false
- javascript - 在 forloop 中使用 .push 的函数不断地为数组赋值