Problemem jest niezainicjalizowany wskaźnik. Wpisujesz string z klawiatury w randomowe nie zaalokowane miejsce w pamięci.
Jeśli chcesz zrobić to na wskaźnikach, to stwórz dynamiczną tablicę o jakimś tam rozmiarze, i dopiero potem wczytuj znaki. A potem usuń tablicę.
#include <stdio.h>
#include <stdlib.h>
#define TEXT_BUF 100
int main()
{
char *text = malloc(TEXT_BUF * sizeof(char));
FILE *f;
if((f = fopen("plik.txt","w")) == NULL)
{
printf("nie mozna otworzyc pliku... \n");
return 1;
}
printf("wprowadz tekst: \n");
scanf("%s",text);
fprintf(f,"%s \n",text);
fclose(f);
free(text);
printf("otworz plik... \n");
return 0;
}
Lub użyj zwykłej tablicy na stosie, która zadziała bardzo podobnie.
#include <stdio.h>
#include <stdlib.h>
#define TEXT_BUF 100
int main()
{
char text[TEXT_BUF];
FILE *f;
if((f = fopen("plik.txt","w")) == NULL)
{
printf("nie mozna otworzyc pliku... \n");
return 1;
}
printf("wprowadz tekst: \n");
scanf("%s",text);
fprintf(f,"%s \n",text);
fclose(f);
printf("otworz plik... \n");
return 0;
}