Dodaj do ulubionych

Jezyk C- zamiana stringa na integer

02.02.09, 23:29
Witam
Mam maly problem. Mianowicie, napisalem prosty programik ktory zamienia ciag stringow na liczbe integer na zasadzie zczytywania po kolei znakow z tabeli i zamiany ichpoleceniem "atoi", uzywalem roznych petli i instrukcji warunkowych ale za kazdym razem gdy uzywam polecenia "atoi" w petli to wyskakuje blad, poza petla nic sie nie dzieje(zaznaczam ze wprowadzane stringi sa to cyfry). Nie juz wiem o co chodzi,probowalem chyba juz wszystkiego, przeciez wydaje mi sie ze w kodzie nie ma zadnego bledu. Ponizej kod, jezeli ktos bedzie wiedzial o co chodzi to prosze o pomoc:

#include <stdio.h>
#include<string.h>
main(){
int i=0;
char z[40];
printf("Podaj zmienna*z:\n");
scanf("%s",z);

while (z[i]!=EOF){
j=atoi(z[i]);
printf("%d\n",j);
i++;
}

//lub

for(i;i<=strlen(z);i++){
k=atoi(s[i]);
printf("%d\n",k);
}

}
Obserwuj wątek
    • lukasx1984 Re: Jezyk C- zamiana stringa na integer 03.02.09, 22:29
      1) scanf("%s",&z);
      2) nie zadeklarowałeś ani zmiennej "j" ani "k".
      3) żadne "for" ani "while" do tego co robisz nie jest potrzebne - nie musisz
      czytać znak po znaku z tej tablicy. Jeśli chcesz korzystać z "atoi" to musisz
      przekazać całą tablicę jako argument.
      4) w czasie kompilacji wyskoczyły Ci błędy, czytałeś je? ;)
      • bakteriagt Re: Jezyk C- zamiana stringa na integer 10.02.09, 21:18
        Jeśłi chodzi o niezadeklarowane k, j oraz s to nie w tym tkwi problem, po prostu deklaracji ich nie dołączyłem. Przy samej kompilacji(kompilator dev c++) żadnego błędu nie pokazuje, jednak po uruchomieniu program się zawiesza. Zastanawiałem się dlaczego funkcja "atoi" działa poza pętlą jednak wewnątrz niej jest kłopot. Teraz już wiem że "atoi" zamienia cały ciąg stringa a nie pojedyńcze znaki. A dlatego zależy mi na takiej zamianie(tzn znak po znaku) ponieważ każdą zamienioną cyfrę w pętli chcę odpowiednio pomnożyć i spotęgować aby cały string podany na początku (jest to string składający się z zer i jedynek czyli liczba w kodzie dwójkowym u2) został zamieniony na liczbę w kodzie dziesiętnym(czyli zwykłą). Oczywiście wiadomo że wklepywane stringi mają być z zakresu 0 - 1, z warunkiem nie będzie problemu. Ewentualnie może macie pomysł na łatwiejszą zamianę liczb dwójkowych na dziesiętne. Z góry dziękuje.

Popularne wątki

Nie pamiętasz hasła

lub ?

 

Nie masz jeszcze konta? Zarejestruj się

Nakarm Pajacyka