在命令行参数中出现字母

Occurrence of alphabets in a command line argument

本文关键字:命令行 参数      更新时间:2023-10-16

我在使用argv指针时遇到了一些困难。使用*argv[1]可以得到argc计数,*argv[2]可以得到整个参数。当取消引用时,每个元素不应该给出一个字符吗?

感谢

int main(int argc,char *argv[])
{
    char store[10]={0,0,0,0,0,0,0,0,0,0};int freq[10]={0,0,0,0,0,0,0,0,0,0};int flag=0;int count=0;int t;
    for(int i=0,j=0;i<argc;i++)
    {
        for(int z=0;z<count;z++)
        {   
        if(i==0) break;
            if(*argv[i+2]==store[z]) flag=1;t=z;break;
        }
           if(flag==0||i==0) {store[j]=*argv[i+2];j++; count++;}
           else freq[t]+=1;
           flag=0;
    }
    for(int x=0;x<count;x++) cout<<store[x]<<"t"<<freq[x]<<endl;
}

i到达argc-2时,您将在*argv[i+2]处获得segfault,因为这样您将访问未定义的参数字符串argv[argc]

如果你想遍历参数的字符,你应该使用二维访问,例如:

// assume there are two arguments present (argc == 3)
int len = 5; // assume there a 5 chars in argv[2]
for(int k = 0; k < len; k++) {
  // do something for each char
  if(argv[2][k] == 'x') { ... }
}

EDIT:将示例更改为持有字符串的argv[2]