C - Wskaźnik na tekst - Proszę o pomoc

C - Wskaźnik na tekst - Proszę o pomoc
QE
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:31
0
Kopiuj
#include <stdio.h>
#include <stdlib.h>

main()
{
	char *tekst;
	int n;
	
	printf("Podaj dlugosc tekstu jaki chcesz wprowadzic"); 
	scanf("%d", &n);
	
	tekst = (int*) mallock (n*sizeof(int));

}

Kompilator już w tym momencie wywala błąd. Chce zrobić dynamiczny wskaźnik na tekst aby poźniej z danego tekstu powybierać tylko litery, cyfry i inne znaki. To postaram się sam zrobić. Proszę tylko o radę dlaczego kod u góry nie działa.

edytowany 1x, ostatnio: qetix
_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:14 dni
0

tekst = (char*)malloc(nsizeof(char));
A właściwie to powinno być:
tekst = (char
)malloc((n+1)*sizeof(char)); // +1 na znak końca.
Poza tym, czemu nie zrobić tak:

Kopiuj
        char tekst[1024+1];
        printf("Podaj tekst: "); 
        scanf("%1024s",tekst);
        printf("Podano tekst '%s'\n",tekst);

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon
QE
Ponieważ chce to zrobić dynamicznie i na wskaźniku.
Endrju
  • Rejestracja:około 22 lata
  • Ostatnio:prawie 2 lata
0

Nie mallock tylko malloc. Skoro alokujesz tablicę char to dlaczego w alokacji wszędzie masz int? Poza tym main powinien zwracać int, nie masz też return.


"(...) otherwise, the behavior is undefined".
QE
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:31
0

Ok poprawiłem ale mam problem z wprowadzeniem tekstu. Próbuje funkcją gets, niestety nie działa.

Kopiuj
#include <stdio.h>
#include <stdlib.h>
 
main()
{
        char *tekst;
        int n,i;
 
        printf("Podaj dlugosc tekstu jaki chcesz wprowadzic"); 
        scanf("%d", &n);
 
        tekst = (char*) malloc(n*sizeof(char));
		
		printf("Podaj tekst");
		gets(tekst);

		puts(tekst);



 
}

Ma ktoś jakiś pomysł?

_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:14 dni
0
qetix napisał(a):

Próbuje funkcją gets, niestety nie działa.
Zgaduje że funkcja gets() siada ci na klawiaturę i krzyczy: - "Nie będę działać!".


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
QE
fflush(stdin) - zapomniałem ;p
QE
  • Rejestracja:ponad 12 lat
  • Ostatnio:ponad 11 lat
  • Postów:31
0

Jest możliwe żebym podał jakiś tekst a tablica zrobiła się dokładnie na taką wielkość ile wynosi liczba znaków w tekście?

_13th_Dragon
  • Rejestracja:prawie 20 lat
  • Ostatnio:14 dni
0

Tak, możliwe ale to spory kawał kodu wyjdzie.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.