Podmienienie znaku na inny

0

dzień dobry, nie mogę poradzić sobie z zamianą dwóch znaków, dodatkowo nie wiem, czy indeks dobre miejsce mi wyznacza, wyznacza mi +1 miejsca. proszę o pomoc
zadanie:

  1. pobierz tekst, 2 znaki drukowane, liczbe dodatnia
  2. oblicz, ile znakow znajduje sie w tekscie
  3. pobrana liczbe potraktuj jako indeks, znak o tym indeksie zmien na "?"
  4. jesli drugi znak z pobranych pojawi sie w tekscie, zmien go na pierwszy pobrany znak
    czyli (znak1=b, znak2=a; pobrany tekst: ala ma kota; więc drukuj:blb mb kotb)
  5. w tekscie "_" zmien na spacje

nie wiem czy: punkt 3 jest dobrze, punkt 4 czuje, ze jestem blisko, a w punkcie 6 są kompletnie głupoty i nie wiem absolutnie jak zmienić "_" na spacje, próbuje bez biblioteki zadnej to pisac, wszystko w petlach i ifach,

prosze uprzejmie o pomoc

oto mój kod:

#include <stdio.h>

int main()
{
    char z[100];
    int a, b;
    unsigned int c;
    int g=0;
    printf("podaj 2 znaki drukowane oraz jedna liczbe calkowita dodatnia\n");
    scanf("%c %c %u",&a, &b, &c);
    printf("%c %c %u\n", a, b, c);
    printf("podaj zdanie zbudowane z kilku wyrazow\n");
    getchar();
    gets(z);

    for(unsigned int i=0;z[i]!='\0';i++)
    {
            g++;
            z[c]='?';
            if(z[i]==b)
            {
            b=a;
            }
            if('_'==' ')
            {
                putchar(' ');
            }
    }
    printf("wszystkich znakow w tekscie jest %d\n", g);
    printf("%s",z);
}
0
wiktor.szewczyk napisał(a):
  1. pobierz tekst, 2 znaki drukowane, liczbe dodatnia
char text[100],replaceto,replacefrom;
unsigned index;
printf("podaj tekst, 2 znaki drukowane, liczbe dodatnia: ");
scanf("%99[^\n] %c %c %u",text,&replaceto,&replacefrom,&index);
printf("\"%s\"" %c <= %c %u\n",text,replaceto,replacefrom,index);
wiktor.szewczyk napisał(a):
  1. czuje, ze jestem blisko

Wymagane: jeżeli drugi znak z pobranych pojawi się w tekście, zmień go na pierwszy pobrany znak
Wykonano: jeżeli drugi znak z pobranych pojawi się w tekście, zmień drugi pobrany znak na pierwszy pobrany znak

4 i 5 dasz rady zrobić jak zrozumiesz jak ktoś zrobił za ciebie 3

1
wiktor.szewczyk napisał(a):
     int a, b;
     scanf("%c %c %u",&a, &b, &c);
     printf("%c %c %u\n", a, b, c);

scanf %c pod integer jest błędem, niestety w C połowa błędów to tzw Undefined Behaviour, czyli może się nic nie stać, może coś sie stać póżniej, może zgasnąć światło, lodówka rozmarznąc itd.
Wysilone nowoczesne kompilatory wykrywają to (w prostszych przypadkach) i dają ostrzeżenie (stare kompilatory tego nie umiały)

Konkretnie na połowie architektur to błąd się schowa pod dywan i nie wywoła skutków, C to naprawdę wredny język.
printf już ma to prawidłowo (legalnie)

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