【发布时间】:2021-03-06 15:09:29
【问题描述】:
我在尝试逐字符读取命令行参数时遇到分段错误。
我有以下代码:
int main(int argc, char** argv)
{
int i,j;
for(i=1;i<argc;i++)
{
for(j=0;argv[i][j]!=0;j++)
{
printf("%c",argv[i][j]);
}
//printf("%c",argv[i][0]);
}
}
此代码运行,但是当我取消注释 printf("%c",argv[i][0]); 行时,我得到一个分段错误。
为什么这被认为是对未分配内存的访问,我应该如何在不检查其内容的情况下解析命令行参数?
具体来说,我想知道参数是否为以下形式:e 表示加号或减号,后跟“e”,后跟一个十六进制数字。在 c 中如何处理这个问题?
【问题讨论】:
-
请不要在给出一些(有效的!)答案后更改您询问的代码。这样,您就可以使这些答案变得无关紧要甚至是错误的。如果您想通过提供新的但仍无法工作的代码版本来增强您的问题或缩小问题范围,请将其添加到原始版本的下方或发布一个新问题。
-
明白。我还是这个平台的新手,还在学习如何使用它。
标签: c segmentation-fault