PDA

Pogledaj cijelu verziju : Dobivanje stringa u C



DragonSoul
24-01-2009, 23:56
Imam problem. Želim dobiti string od usera koji može sadržavati razmake. Prva ideja mi je bila gets(), no ona ne uspjeva, jer kad je scanf() iznad njega gets() jednostavno ne radi. Radim u čistom C-u. Ne mogu ići s for(), jer ne znam koliko će znakova biti uneseno, može biti 12 a može biti 57 a može biti i 77 (itd)...
Što da radim?

fps_gamer
25-01-2009, 18:11
getline() ne radi u C-u?

pokusaj sa while kad nece for :D

DragonSoul
25-01-2009, 19:57
Problem je što sve te funkcije uzimaju određenu veličinu byteova, dok ja ne znam točno koliko će znakova meni korisnik upisati.

Luka
25-01-2009, 21:08
postoji li u C-u funkcija koja će vratiti samo jednak znak sa std. ulaza?
ako da, onda bi kod ovako nekako izgledao:


char str[max_broj_slova];
int k = 0;
char c;
do
{
c = get(); // pretpostavka da se funkcija zove get, i vraca slovo
if (c != '\n')
str[k++]S= c;
} while (c != '\n');



Ukratko - stvori se polje znakova, sa ulaza se uzima slovo i unosi u polje ako se ne radi o znaku za novi red - ako se radi o tom znaku (\n), znak se ne dodaje a petlja se prekida.

DragonSoul
26-01-2009, 20:17
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int k = 1,i = 0;
char buff[1000];

int main()
{
while(k)
{
scanf("%c", &buff[i]);
if(buff[i]S== '\n')
{
buff[i]S= '\0';
k = 0;
}
else
i++;
}
printf("%s\n", buff);
return 0;
}

Hvala Luka.

Luka
26-01-2009, 21:15
np, aj sad riješi z-prave :D

Tracer
28-01-2009, 13:55
Imam problem. Želim dobiti string od usera koji može sadržavati razmake. Prva ideja mi je bila gets(), no ona ne uspjeva, jer kad je scanf() iznad njega gets() jednostavno ne radi. Radim u čistom C-u. Ne mogu ići s for(), jer ne znam koliko će znakova biti uneseno, može biti 12 a može biti 57 a može biti i 77 (itd)...
Što da radim?
kako misliš da gets ne radi ako je iznad njega scanf? ajd stavi primjer.

Tracer
28-01-2009, 14:45
i inače, unos niza koji može sadržavati i razmake možeš definirati i ovako:


char linija[100];
scanf("%[^\n]", linija);