• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

pisanie do pliku...

Object Storage Arubacloud
0 głosów
143 wizyt
pytanie zadane 7 sierpnia 2015 w C i C++ przez rafalmagician Obywatel (1,320 p.)

Mam problem bo nie mogę zrobić tak żeby użytkownik podawał tekst z klawiatury i później ten tekst zapisywał się do pliku...

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

int main()
{
    char *text;
    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;
}

Nie działa mi 16 linia i nie wiem dlaczego ?? Proszę o pomoc :)

3 odpowiedzi

+1 głos
odpowiedź 7 sierpnia 2015 przez MrWeb Stary wyjadacz (10,200 p.)
wybrane 7 sierpnia 2015 przez rafalmagician
 
Najlepsza

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;
}

 

komentarz 7 sierpnia 2015 przez rafalmagician Obywatel (1,320 p.)
Faktycznie o tym nie pomyślałem i teraz program działa :) Dziękuję bardzo :)
+1 głos
odpowiedź 7 sierpnia 2015 przez Dorion300 Szeryf (90,250 p.)
Dodaj * przed text, jeśli dalej nie działa to zalokuj dynamiczne pamięć za pomocą malloc do wskaźniku text po nie wierzę że funkcja scanf sama sobie alokuje pamięć.
+1 głos
odpowiedź 7 sierpnia 2015 przez hit02 Nałogowiec (33,970 p.)

Najpewniej zapomniałeś zaalokować pamięć. Dodaj coś w stylu:

text = malloc(0x10000); //Tutaj wpisz wielkość bufora, jaką potrzebujesz.
if(text = NULL)
{
    printf("Not enough memory!");
    return 1;
}

Podobne pytania

0 głosów
1 odpowiedź 332 wizyt
pytanie zadane 19 stycznia 2021 w C i C++ przez forvev Początkujący (390 p.)
0 głosów
0 odpowiedzi 191 wizyt
0 głosów
0 odpowiedzi 153 wizyt

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...