C - Wprowadzanie ciągu znaków char* - problem segmentation fault

0

Witam, mam mały problem z dosyć prostym porogramikiem - aż banalnie powiedziałbym. W c++ są stringi a tu musze operować na char*. Komentarzem zaznaczyłem miejsce błędu. Jak przypisuje alamakota = "alamakota"; - to działa natomiast funkcje gets lub fgets powodują segmentation fault. Oto program:

z góry dziękuję za pomoc ;)

#include <stdio.h>

int i=0; //zmienna sterująca

char* pobierz_tekst();
void wypisz_tekst(char*);

int main()
{
    char* zdanie;

    printf("Prosze podac dowolne zdanie:\n");
    zdanie = pobierz_tekst();
    wypisz_tekst(zdanie);
    printf("%d",*wsk);

    return 0;
}


char* pobierz_tekst()
{
    char* alamakota;
    gets(alamakota); //NIE WIEM JAK ZCZYTAĆ - SEGMENTATION FAULT - DO POPRAWIENIA !!
    return alamakota;
}

void wypisz_tekst(char* tekst)
{
    printf("\nTwoje zdanie to:%s",tekst);

} 
0
    char* alamakota;
    gets(alamakota); //NIE WIEM JAK ZCZYTAĆ - SEGMENTATION FAULT - DO POPRAWIENIA !!

zapomniales zalokowac pamiec

0

Dzięki. Racja głupi błąd a zapomniałem o tym...

0

Pisze to w części w c++ gdyż w C sobie nie radzę :) Ale coś z tego kodu na pewno wyciągniesz.

#include <windows.h>
#include <iostream>
#include <conio.h>
using namespace std;
char Bufor[100];
char* tekst, tekst2;
int main()
{
         //jak okreslicwartosc tekst2 na podstawie tekst
         tekst2 = tekst;
        
         printf("Wpisz tekst [do 100 znakow]: ");
         cin.getline(Bufor,100); //pobierasz całą linijkę do tablicy char
         tekst = Bufor; //przypisujesz tablicę do wskaźnika
         
         //jakbyś chciał odczytać tekst, na który wskaźnik wskazuje:
         strcpy (Bufor, tekst); //tekst na jaki wskazuje wskaźnik zostanie przekopiowany do tablicy
         printf("\nTwoje zdanie to: %s", Bufor);
         getchar();
}
 
         

Tak w nawiasie wskaźnikom nie można przypisywać tekstu itp. Wskazują one tylko na pierwszą komórkę w pamięci. (jeśli źle mówię poprawcie mnie).

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