Invert string to C

I am trying to write code in which I enter String, and I turned it over. Ie: Nokia on aikon.

I already have this in some way, but now I want to use the strlen function to get the original string length and create a new one based on this length.

All I get from my printf is "?".

Here is the code:

void main(void)
{
    char palavra[10];
    char palavra2[10];
    int i;
    int k;

    printf("Introduza uma string: \n");
    scanf("%[^\n]", palavra);

    for( i = 0, k = strlen(palavra) - 1 ; i <= k; i++, k--)
    {
        palavra2[k] = palavra[i];
    }
    printf("\nString invertida: %s", palavra2);
}
+4
source share
4 answers

Try this simple inverse function:

/* reverse:  reverse string s in place */
void reverse(char s[])
{
    int c, i, j;

    for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
        c = s[i];
        s[i] = s[j];
        s[j] = c;
    }
}

To integrate it into your code:

void main(void)
{
    char palavra[10];
    int c, i, j;

    /* read the string */
    printf("Introduza uma string: \n");
    scanf("%[^\n]", palavra);

    /* null-terminate the string */
    palavra[strlen(palavra)] = '\0';

    /* reverse the string */
    for (i = 0, j = strlen(palavra)-1; i < j; i++, j--) {
        c = palavra[i];
        palavra[i] = palavra[j];
        palavra[j] = c;
    }

    printf("\nString invertida: %s", palavra);
}
+2
source

, , , i <= k: . i strlen(palavra)

, :

int len=strlen(palavra);
for( i = 0, k = len - 1 ; i < len; i++, k--)
{
    palavra2[k] = palavra[i];
}
palavra2[len]='\0';

( strlen(palavra), )

+6

, , .

#include<stdio.h>
int main(void)

{
    char palavra[10];

    printf("Introduza uma string: \n");
    scanf("%[^\n]", palavra);

    char *start=palavra;
    int len = strlen(palavra);
    char *end = (palavra+len-1);

    while(start < end )
    {
            *start = *start ^ *end;
            *end = *end ^ *start;
            *start = *end ^ *start;
            start++;
            end--;

    }


printf("\nString invertida: %s\n", palavra);

return 0;
}

,

+1

. string ( ++), char *.

void reverse(string& str, int i, int len)
{
    if(i<len)
        reverse(str, i+1, len-1);
    swap(str[i], str[len]);
}

Caller - reverse(str, 0, str.length()-1)

-1

Source: https://habr.com/ru/post/1662899/


All Articles