Wydaje mi się, że przekazujesz jako parametr zmienną wskaźnikową czyli typu int, o niezadeklarowanej wartości, a oczekujesz, że funkcja w C zmieni jej wartość, ale chyba nie tędy droga.
Gdybyś podał konkretny wskaźnik wtedy w funkcji mógłbyś wpisać coś do tego obszaru np
w main()
char napis[5]
funkcja(napis);
a w pętli podstawiasz, lokowanie pamięci nie jest wówczas potrzebne.
Myślę, że spojrzenie na wartość wskaźnika da Ci wskazówkę, spróbuj kod
Kod: Zaznacz cały
#include <stdio.h>
#include <stdlib.h>
void funkcja(char *name) {
char pliczek[5]={ '1','.','t','x', 0 };
int x;
name = (char*)malloc(sizeof(pliczek));
for(x=0;x<5;x++) name[x]=pliczek[x];
if(name) {
printf("Udana allokacja pamieci!\n");
printf("zmienna name = %i\n", name);
return;
}
else {
printf("Nieudana allokacja pamieci!\n");
return;
}
}
int main(int argc, char* argv[]) {
char *napis;
printf("zmienna napis = %i\n", napis);
funkcja(napis);
printf("zmienna napis = %i\n", napis);
return 0;
}
Aby to działało zgodnie z zamysłem wystarczy zwrócić wskaźnik z funkcji.
Jeśli z niego nie korzystamy nie ma potrzeby przekazywania go funkcji, wystarczy zmienna lokalna.
Kod: Zaznacz cały
char *funkcja() {
char *name;
char pliczek[5]={ '1','.','t','x', 0 };
int x;
name = (char*)malloc(sizeof(pliczek));
for(x=0;x<5;x++) name[x]=pliczek[x];
if(name) {
printf("Udana allokacja pamieci!\n");
return name;
}
else {
printf("Nieudana allokacja pamieci!\n");
return NULL;
}
}
int main(int argc, char* argv[]) {
char *napis;
napis = funkcja();
printf("%s", napis);
return 0;
}