problem z zasiegiem zmiennej mimo static

0

Witam
Mam o to taki program. I kompilator wyrzuca mi coś takiego :`dl' undeclared (first use in this function), mimo ze uzylem static. Może, źle rozumuje ale myślę ze uzycie slowa static pozwala na uzwanie zmniennej lokalnej poza funkcja w ktorej ona istnieje

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

int i,dlugosc;
char *z1;
char *duze_litery(int dlugosc, char *tekst);
int main()
{
  char tekst[] = "Ala ma kota";
  dlugosc=strlen(tekst);
  printf("TEKST POCZATKOWY:  %s\n", tekst);
  z1=duze_litery(dlugosc,tekst);
  printf("oryginalny tekst: %s\n", tekst);
  printf("tekst po zmianie: %d\n", dl);
  system("PAUSE");	
  return 0;
}

char *duze_litery(int dlugosc, char *tekst)
{
    static char *dl;
    dl=(char*)malloc((dlugosc+1)*sizeof(char));
    for (i=0; i<=dlugosc; i++)
    {
        dl[i]=toupper(tekst[i]);
    }
    return dl;
} 
0

Nie doczytałeś. static pozwala na PRZECHOWYWANIE wartości przez zmienną pomiędzy wywołaniami funkcji. Żeby zrobić to o czym mówisz musisz ją zadeklarować globalnie (poza jakąkolwiek funkcją). Ale to brzydkie, nieeleganckie i na pewno wynika ze złego designu...

0

aha,czyli niemogę wyświetlić jej zawartości, ale poza funkcją bedzie ona miała wartość: ALA MA KOTA ?

0

Jak ci zależy na wyświetleniu dl to zrób tak żeby funkcja zwracała dl. Wtedy moim zdaniem będzie oki.

0

ale funkcja zwraca dl

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