当尝试逐字符读取命令行参数时,我得到分段错误。
我有以下代码:
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<0-9A-F>意思是加减号后面跟着"e",后面跟着一个十六进制数字。在c中怎么做呢?
内部循环的条件不正确:
argv[i][j]!="