Строка не копируется или не печатается правильно - PullRequest
0 голосов
/ 14 июля 2020
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char *text1 = "Text von links nach rechts!";
    char text2[50] ;
    printf("ursprunglicher text ist : \n");
    printf(("%s\n\n",text1));
    int i = 0 ;
    
    
    while(*(text1+i) != '\0')
    {
        i++;
    }
    
    int j = 0;
    while(i >= 0)
    {
        text2[j] = text1[i];
        //printf("%c",*(text2+j));
        i--;
        j++;
    }
    *(text2 + strlen(text1)+1) = '\0';
    
    printf("%s",text2);
    return 0 ;
}

Мой оператор printf ничего не печатает, я пытался напечатать символ за символом в while l oop, чтобы проверить, правильно ли он или нет, и он работал, но не работал во время печати. Программа обычно меняет местами текст text1 и копирует его на text2.

1 Ответ

2 голосов
/ 14 июля 2020

Когда заканчивается первый l oop, text1[i] является байтом нулевого терминатора. Таким образом, вы копируете этот нулевой байт в первый элемент text2, поэтому text2 рассматривается как пустая строка.

Вы должны вычесть 1 из i перед копированием l oop.

     while(*(text1+i) != '\0')
     {
         i++;
     }
     i--;

Первое l oop и это вычитание можно заменить на:

    i = strlen(text1) - 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...