Δημοσιεύτηκε: 14 Φεβ 2012, 11:59
από migf1
Star_Light έγραψε:
Spoiler: show
Κώδικας: Επιλογή όλων
void Display_reverse(char str[N])
{
char *sp; // string pointer

for(sp = str; *sp!='\0' && *sp!='\n'; sp++)

putchar(*sp);
return;


btw ηθελα να επισημάνω οτι η έκφραση "ο sp δείχνει στον str" ειναι λάθος ετσι δεν ειναι? Ο sp απλα δειχνει οπου και ο str
αλλιως θα ηταν διπλός δείκτης στον str "δεικτη".

Σωστά :)
Για αυτό σε αυτές τις περιπτώσεις, την τοπική μεταβλητή την ονομάζουμε cp (αντί για sp) διότι είναι character-pointer (και όχι string-pointer).

έγραψε:Απλα ξανακοιτάω τα strings λιγο πριν την μεγαλη μάχη.

P.S Εδω ο str[N] ειναι περιττός απο την άποψη πως θα μπορούσα εξαρχης να χρησιμοποιήσω το ονομα του πίνακα σαν δείκτη σε char και να το χειριστω ετσι μεσα στην συνάρτηση πχ ->

Spoiler: show
Κώδικας: Επιλογή όλων
#include<stdio.h>
#define SIZE 30
void func( char *message);

int main()
{
char message[SIZE]="";

printf(" Give a string: ");

fgets(message, SIZE , stdin);

func(message);

return 0;
}
void func( char *message)
{
while(*message!='\0')
{
putchar(*message);
message++;
}

return;
}

Επίσης σωστά :)

Απλώς όταν αρχικοποιείς τον message στην main() βάζε τον = {'\0'} (αντί για = ""). Το έχω λάθος στο site μου, υπό την έννοια πως το ={'\0'} μηδενίζει εγγυημένα όλες τις θέσεις του string, ενώ το ="" μηδενίζει εγγυημένα μονάχα την 1η θέση (για τις υπόλοιπες είναι compiler dependent).