需要更改指针让我有问题

时间:2014-04-06 17:33:23

标签: c pointers

您好我有一个程序从用户接收参数。使用指针执行传输。 该代码稍后不使用指针,这会产生接收内容的问题。如果您帮我修复可行的代码,我会很高兴。

代码 -

#include <stdlib.h>
#include<string.h>

void order(int n,char argv[99]);

int main(int argc, char** argv)
{
int i,n;
n = argc;
order(n,*argv);

}

void order(int n,char argv[99])
{
int i,j;
char temp;

for(i=1; i < n; i++)
{
     for(j = 0 ; j < n - 1; j++)
     {
        if(argv[j] > argv[j+1])
        {
            temp=argv[j];
            argv[j]=argv[j+1];
            argv[j+1]=temp;
        }
    }
}
system("PAUSE");
for (i = 0; i < n ; i++)
{
    printf("%c",argv[i]);
}   

}

1 个答案:

答案 0 :(得分:1)

您似乎对argcargv感到困惑。
int argc包含传递给程序的命令行参数的数量,char **argv是包含这些参数的字符串(空字符终止字符数组)的数组(空指针终止)。这与您的计划不一致:
1.没有理由将任何一个命令行参数的长度限制为99个字符。
2.只将第一个(零索引)命令行参数传递给order()。这通常是程序的名称。
3.然后在argc中使用order()。但是,argc 不是第一个命令行参数的长度。那将是strlen(argv[0])