繁体   English   中英

使用 c 中的指针反转二维数组中的字符串数组

[英]reversing a string array within a 2D array using pointer in c

我需要编写一个 function ,它需要一个二维字符串数组,获取每个字符串并在数组中反转它。

所以如果有:

{"first", "second", "third", "fourth"}

它会将其更改为:

{“tsrif”、“dnoces”、“driht”、“htruof”}

但它需要在不返回不同副本的情况下执行此操作,换句话说,我必须使用指针重新排列它。

方法签名如下所示:

void reverseStrings(char strings[NUM_STRINGS][STRING_LENGTH]){
    char *ptr = &strings[0][0];
}

到目前为止,我有这个:

char* reverseOneString(char s[STRING_LENGTH]){
char temp;
char *p = &s[0];

while(*p != '\0'){
    p++;
}
return p;
}

void reverseStrings(char strings[NUM_STRINGS][STRING_LENGTH]){
printf("reversing strings\n");
char *ptr = &strings[0][0];

for(int i= 0; i < NUM_STRINGS; i++){
    char *nptr = reverseOneString(strings[i]) - 1;
    while(nptr >= ptr){
    
        char temp = *ptr;
        *ptr = *nptr;
        *nptr = temp;
        
        nptr--;
        ptr++;
        while(*ptr == "\0"){
        ptr++;
        }
    }
    printf("\n");
}
}

但它并没有真正起作用

这就是我要找的,如果我解释得不好,请见谅

char* reverseOneString(char s[STRING_LENGTH]){
    char temp;
    char *p = &s[0];
 
    while(*p != '\0'){
        p++;
    }
    p--;
    printf("one reverse is sending back %c\n", *p);
    return p;
}

void reverseStrings(char strings[NUM_STRINGS][STRING_LENGTH])
{
    char *ptr = &strings[0][0];
    printf("reversing strings\n");
    printf("First pointer is pointing to: %c\n", *ptr);

    for (int i = 0; i < NUM_STRINGS; i++) {
        int counter = 0;
        char* nptr = reverseOneString(strings[i]);
        while (nptr > ptr) {
            printf("ptr: %c  nptr: %c\n", *ptr, *nptr);

            char temp = *ptr;
            *ptr = *nptr;
            *nptr = temp;

            nptr--;
            counter++;
            ptr++;
            while(*ptr == '\0'){
                ++ptr;
            }        
        }
    
        ptr += STRING_LENGTH - counter;
        printf("this is the process value of ptr %c\n", *ptr);
        printf("\n");
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM