#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)
}
该程序需要获取命令行参数,将它们连接成一个字符串数组,打印该数组的每个元素,然后反向打印该数组的每个元素。我真的不知道我在做什么,这是我最好的尝试。我很难掌握指针以及何时以及如何使用它们。任何帮助将不胜感激。
答案 0 :(得分:1)
好的,我给你实际尝试的积分,而不仅仅是要求我们为你写这个,但我必须说你做得太多了。根据您的描述,您需要的代码可以更简单。不过,我不想为你做这件事,所以我会给你一些指示:
args已存储在字符串数组中,因此您不必创建单独的字符串数组来存储它们。只需使用argv。
您的循环逻辑过于复杂,无法简单地循环遍历数组。当你需要做的只是循环一个数组一次时,在一个while循环中嵌入一个for循环是非常必要的。要完成它:for(int i = 0; i < len; i++)
。要倒退:for(int i=len-1; i >=0; i--)