Πρόβλημα με ponter στη C

Συζητήσεις για την γλώσσα C και C++

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
stavrosicsd
Δημοσιεύσεις: 10
Εγγραφή: 06 Φεβ 2010 21:31

Πρόβλημα με ponter στη C

Δημοσίευση από stavrosicsd » 27 Δεκ 2010 15:59

Καλησπέρα σε όλους,
έχω ένα χαζό προβληματάκι που οφείλεται σε pointer και δεν μπορώ να καταλάβω το λόγο που εμφανίζεται. Πίο συγκεκριμένα η πατακάτω συνάρτηση δέχεται έναν ακέραιο και επιστρέφει το αντίστοιχο αλφαριθμητικό σύμφωνα με τους κανόνες που φαίνονται παρακάτω. Πχ για την τιμή 230512 έπρεπε να δώσει wel και δίνει wew. Το ίδιο κάνει πάντα. Εκτυπώνει τους 2 πρώτους χαρακτήρες σωστά αντί για τον τρίτο εκτυπώνει λανθασμένα ξανά τον πρώτο. Στην αναστροφή φυσικά βρίσκεται το πρόβλημα.

Ευχαριστώ εκ των προτέρων για κάθε βοήθεια..

void IntegerToMessage(unsigned long int akeraios){

unsigned long int temp;
char *message;
char *anastrofo;
int k=0,i;

message=(char*) malloc (10);



while(akeraios!=0){


temp=akeraios%100;


if(temp==0)
*message=' ';

if(temp==1)
*message='a';

if(temp==2)
*message='b';

if(temp==3)
*message='c';

if(temp==4)
*message='d';

if(temp==5)
*message='e';

if(temp==6)
*message='f';

if(temp==7)
*message='g';

if(temp==8)
*message='h';

if(temp==9)
*message='i';

if(temp==10)
*message='j';

if(temp==11)
*message='k';

if(temp==12)
*message='l';

if(temp==13)
*message='m';

if(temp==14)
*message='n';

if(temp==15)
*message='o';

if(temp==16)
*message='p';

if(temp==17)
*message='q';

if(temp==18)
*message='r';

if(temp==19)
*message='s';

if(temp==20)
*message='t';

if(temp==21)
*message='u';

if(temp==22)
*message='v';

if(temp==23)
*message='w';

if(temp==24)
*message='x';

if(temp==25)
*message='y';

if(temp==26)
*message='z';



akeraios=akeraios/100;
message++;
k++;

}

message--;
k--;


for(i=0;i<k;i++){
printf("%s",message);
message--;
}


}

Άβαταρ μέλους
dva_dev
Script Master
Δημοσιεύσεις: 3790
Εγγραφή: 16 Σεπ 2005 01:32
Επικοινωνία:

Πρόβλημα με ponter στη C

Δημοσίευση από dva_dev » 27 Δεκ 2010 16:53

Δοκίμασε κάτι τέτοιο

Κώδικας: Επιλογή όλων

for&#40;i=0;i<=k;i++&#41;
&#123;
    printf&#40;"%c",*message&#41;;
    message--;
&#125;

stavrosicsd
Δημοσιεύσεις: 10
Εγγραφή: 06 Φεβ 2010 21:31

Πρόβλημα με ponter στη C

Δημοσίευση από stavrosicsd » 27 Δεκ 2010 18:28

Μια χαρά.. σευχαριστώ πολύ....!!!

Άβαταρ μέλους
virxen75
Δημοσιεύσεις: 493
Εγγραφή: 18 Φεβ 2009 00:17
Τοποθεσία: ΗΡΑΚΛΕΙΟ ΚΡΗΤΗΣ

Πρόβλημα με ponter στη C

Δημοσίευση από virxen75 » 27 Δεκ 2010 19:47

θα μπορούσες να το γράψεις και έτσι

Κώδικας: Επιλογή όλων

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

void IntegerToMessage&#40;unsigned long int akeraios&#41;&#123;
    unsigned long int temp;
    char *message;
    char *anastrofo;
    int k,i=0;
    message=&#40;char*&#41; malloc &#40;10&#41;;
    anastrofo=&#40;char*&#41; malloc &#40;10&#41;;
    while&#40;akeraios!=0&#41;&#123;
        temp=akeraios%100;
        if&#40;temp==0&#41;
            *&#40;message+i&#41;=' ';
        else if &#40;temp>=1 && temp<=26&#41;&#123;
            *&#40;message+i++&#41;='a'-1+temp;
        &#125;
        akeraios=akeraios/100;
    &#125;
    *&#40;message+i&#41;='\0';
    for &#40;k=0;k<i;k++&#41;
     *&#40;anastrofo+k&#41;=*&#40;message+i-k-1&#41;;
    *&#40;anastrofo+i&#41;='\0';
    printf&#40;"\n<%s>",anastrofo&#41;;
&#125;

int main&#40;&#41;&#123;
    IntegerToMessage&#40;230512&#41;;
    getchar&#40;&#41;;
    return 0;
&#125;

Απάντηση

Επιστροφή στο “C, C++”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες