简体   繁体   中英

Printing a reversed string/array in C

I'm trying to print a reversed string/array. I've used the following code and it seems to be able to give my second array, revString , values in the correct order from the first array string . I am also able to print individual characters in both arrays, and I'm able to print the entire string of the first array. However the revString array doesn't print at all. I'm wondering if I am missing a huge point here.

void reverseString(char string[]) {
    int i = strlen(string);
    int i_2 = 0;
    revString arrayet
    char revString[i + 1];
    char *character; 

    while (i > -1) {
        character = &string[i];
        revString[i_2] = *character;
        printf("%c", revString[i_2]);
        i = i - 1;
        i_2 = i_2 + 1;
    }
    revString[i_2] = '\0';
    printf("%d\n", i_2);
    printf("%s", revString);
}

The code gives now the following output with example string "Hello World" ;

dlrow olleH13

As you can see the final printf statement doesn't do anything

In C language indexing is 0 based. so, if you make a string of 10 length, the last character will be at index 9.

In your code, when you are assigning characters to revString, your code is trying to access string[len].

your code should be like this..

int i = strlen(string) - 1;

Your code reverses the string string including the null terminator at string[i] . The resulting array starts with a null terminator, hence printf outputs nothing.

Here is a modified version:

void reverseString(char string[]) {
    int i = strlen(string);
    int i_2 = 0;
    char revString[i + 1];
    char character;

    while (i > 0) {
        i = i - 1;
        character = string[i];
        revString[i_2] = character;
        //printf("%c", revString[i_2]);
        i_2 = i_2 + 1;
    }
    revString[i_2] = '\0';
    printf("%d\n", i_2);
    printf("%s", revString);
}

Output:

11
dlrow olleH

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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