Avatar billede Slettet bruger
11. oktober 2007 - 21:59 Der er 4 kommentarer og
2 løsninger

Opbygning af funktion

char getdata()
{
    char data[100] = "bah";
    return (data);
}

Hvad er der i vejen med ovenstående? Jeg får følgende fejl:

client.c:14: error: invalid conversion from âchar*â to âcharâ
client.c:13: warning: address of local variable âdata2â returned
Avatar billede arne_v Ekspert
11. oktober 2007 - 22:07 #1
Ddu forsoeger at returnere et char array i en funktion som skal returnere en enkelt char.
Avatar billede arne_v Ekspert
11. oktober 2007 - 22:08 #2
Og hvis du aendrer funktionen til at returnere et char array bliver du ramt af et andet
problem: man maa ikke returnere en pointer til en lokal variabel.
Avatar billede Slettet bruger
11. oktober 2007 - 23:35 #3
OK, og løsningen er? :)

Du må gerne smide et svar. Funktionen skal returnere en char.
Avatar billede arne_v Ekspert
12. oktober 2007 - 01:11 #4
char getdata()
{
    return 'b';
}

eller

char getdata()
{
    char data[100] = "bah";
    return data[0];
}

eller en anden måde at returnere et enkelt bogstav på.
Avatar billede arne_v Ekspert
12. oktober 2007 - 01:11 #5
Og et svar.
Avatar billede segmose Nybegynder
12. oktober 2007 - 09:19 #6
For at kunne svare på dit spørgsmål må jeg vide hvad din funktion egentlig skal, vil du returnere den første char i arrayet og ignore de øvrige så er svaret det ovenstående.
Hvis du ville have hele teksten tilbage så er det som arne skriver ikke tilladt at returnere en pointer/referance til en lokal variabel i en funktion du skal derfor have et array du kan returnere eller give funktionen en pointer til et array med du kan kopiere ind i.

static const char data[100] = "bah";
et array der er lokalt (static) til denne kilde fil, den kan så refereres/pointes til i getdata(), man må så ikke ændre teksten (const), funktionen skal så returnere en const char *.

Ellers skal man give et array med til at kopiere over i

char *getdata(char *buffer, int length) {
  memcpy(buffer, "bah", length);
  return buffer;
}

int main() {
  char data[100],
  *ptr = getdata(data);
  return EXIT_SUCCESS;
}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester