Szyfr cezara problem

0

Witam mam dość nietypowy problem z moim programem, działa on w 100% ale nie do końca jest poprawny przy wpisaniu danych wyświetla mi zaszyfrowany tekst i dodatkowo jakies rożne znaki dołączam załącznik, może jest ktoś mi w stanie pomóc

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char text[20];
    int przesuniecie;
    int l;

    printf("Prosze wprowadzic tekst do zaszyfrowania\n");
    scanf("%s",&text);
    printf("Prosze wprowadzic przesuniecie\n");
    scanf("%i",&przesuniecie);

    for(l=0;l<=strlen(text);l++){
        if(przesuniecie<0){
            if((text[l]+przesuniecie)<97){
                text[l]=text[l]+26+przesuniecie;
            }else{
                text[l]=text[l]+przesuniecie;
            }
        }else{
            if((text[l]+przesuniecie)>122){
                text[l]=text[l]-26+przesuniecie;
            }else{
                text[l]=text[l]+przesuniecie;
            }
        }
    }
    printf("Zaszyfrowany tekst:\n");
    printf("%s",&text);
    printf("\n");
    return 0;
}
0

Nie zakańczasz nigdy tekstu zerem. Najprostsza poprawa:

char text[20] = {0};
0

Wraz wyrzuca mi to samo rożne niepotrzebne znaki

1
kq napisał(a):

Nie zakańczasz nigdy tekstu zerem. Najprostsza poprawa:

char text[20] = {0};

Moze bardziej pod indexem strlen(text)+1 znak '\0'

0

Fakt, nie to było problemem.

for(l=0;l<=strlen(text);l++){

<= oznacza, że iterujesz poza napisem. Zamień na <. I nie wywołuj strlen w pętli, nie ma to sensu.

0

wyrzuciłem tam z pętli strlen
tak to wygląda
for(l=0;l<(text);l++){
oraz tak dopisałem do tamtego
char text[20]= {'\0'};

ale nadal obok tekstu który jest szyfrowany pojawiają się znaki i dotyczy to tego [20] bo przykładowo szyfruje tekst 15 znakowy to pojawiają się 5 dodatkowe, szyfruje 18 znaków pojawiają się 2 dodatkowe, a jak szyfruje 25 to pojawia się tylko 20 na takiej zasadzie polega mój problem

1

modyfikowales (szyfrowales) znak '\0' i stad problem

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
int main()
{
    char text[256];
    int przesuniecie;
    int l;
 
    printf("Prosze wprowadzic tekst do zaszyfrowania\n");
    scanf("%s",&text);
    printf("Prosze wprowadzic przesuniecie\n");
    scanf("%i",&przesuniecie);
 
    for(l=0;l<strlen(text);l++){
        if(przesuniecie<0){
            if((text[l]+przesuniecie)<97){
                text[l]=text[l]+26+przesuniecie;
            }else{
                text[l]=text[l]+przesuniecie;
            }
        }else{
            if((text[l]+przesuniecie)>122){
                text[l]=text[l]-26+przesuniecie;
            }else{
                text[l]=text[l]+przesuniecie;
            }
        }
    }
    printf("Zaszyfrowany tekst:\n");
    printf("%s",&text);
    printf("\n");
    return 0;
}
0

Dzięki wielki @stivens taki głupi jeden błąd a ogarnąć nie mogłem :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1