我需要在C中编写一个程序,该程序接受命令行输入,将其放入字符串数组中,然后反向打印该数组/打印

时间:2017-10-12 16:37:00

标签: c arrays string command-line-arguments

#include <stdio.h>
#include string.h

int concat(char str[], char *lngstring[], int x);
void printreverse(char lngstring[], int x);
#define MAX_CHARS 100

int main( int argc, char *argv[] )  {
    longstring[MAX_CHARS] = {'\0'};
    concat(*argv[], *longstring[],argc);
    printf("%s", longstring);
    printreverse(*longstring[],argc);
}


int concat(char *str[], char *lngstring[], int x){
    int count = 0;
    int count2 = 0;
    while(count <= (2 * x){
        lngstring[count] = str[count2];
        count += 1;
        lngstring[count] = " ";
        count += 1;
        count2 += 1;
    }
    return 0;
}

void printreverse(char *lngstring[], int x){
    char *cas[] = lngstring;
    int count = 0;
    int count2 = x;
    char temp[];
    char temp2[];
    while(count <= x){

        for(i = 0; i < x; i++){
            char temp[] = cas[count];
            char temp2[] = cas[count2];
            cas[count2] = temp;
            cas[count] = temp2;
            count++;
            count2--;
        }
        //reverse the order of strings in array
        count = 0;
        while(count <= x){
        int bs = strlen(cas[count]);
        int zx = bs;
        char temp[] = cas[count]
        for(i = 0; i <= bs; i++){
            char temps = temp[i]
            char temps2 = temp[zx]
            temp[i] = temps2;
            temp[zx] = temps;
            zx--;
        }
        //reverse each individual string
        cas[count] = temp;
    }
    printf("%s",cas)
}

该程序需要获取命令行参数,将它们连接成一个字符串数组,打印该数组的每个元素,然后反向打印该数组的每个元素。我真的不知道我在做什么,这是我最好的尝试。我很难掌握指针以及何时以及如何使用它们。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

好的,我给你实际尝试的积分,而不仅仅是要求我们为你写这个,但我必须说你做得太多了。根据您的描述,您需要的代码可以更简单。不过,我不想为你做这件事,所以我会给你一些指示:

  • args已存储在字符串数组中,因此您不必创建单独的字符串数组来存储它们。只需使用argv。

  • 您的循环逻辑过于复杂,无法简单地循环遍历数组。当你需要做的只是循环一个数组一次时,在一个while循环中嵌入一个for循环是非常必要的。要完成它:for(int i = 0; i < len; i++)。要倒退:for(int i=len-1; i >=0; i--)