Jak czytać wiersze ze stdin w programowaniu C

Jak czytać wiersze ze stdin w programowaniu C
STDIN jest krótką formą „standardowego wejścia”, w programowaniu C termin „stdin” jest używany do wejść, które są pobierane z klawiatury przez użytkownika lub z pliku. „Stdin” jest również znany jako wskaźnik, ponieważ programiści uzyskują dostęp do danych z użytkowników lub plików i mogą wykonywać na nich akcję.

W tym zapisie będziemy używać wbudowanych funkcji programowania C, które można użyć do odczytania danych wejściowych przez stdin.

Jak odczytać wiersz ze stdin w programowaniu C

Istnieją różne wbudowane funkcje używane w programowaniu C do odczytu wejść ze stdina. Funkcje używane do odczytu linii to:

  • getline ()
  • getchar ()
  • putchar ()
  • scanf ()

Szczegółowo wyjaśnimy wszystkie te funkcje.

getline (): Ta funkcja służy do odczytu linii ze stdina. Aby zrozumieć tę funkcję, rozważmy przykład, utworzymy plik tekstowy o nazwie MyFile2.c i napisz następujący skrypt:

#włączać
#włączać
int Main (void)

printf („Wprowadź wiersz: \ n”);
Char *linia = nill;
size_t len ​​= 0;
SSIZE_T LINESIZE = 0;
LINESIZE = GETLINE (& LINE i LEN, STDIN);
printf („Wpisałeś %S, który ma %ZU znarów.\ n ”, wiersz, linie -1);
wolna linia);
powrót 0;

Skompiluj skrypt pliku2.C Korzystanie z kompilatora GCC:

$ gcc myfile2.C -O myfile2

Uruchom kod za pomocą polecenia:

$ ./Myfile2

W powyższym wyjściu widzimy, że linia jest pobierana ze stdina, a następnie wyświetlana z liczbą jego znaków. Funkcja getline () odczytuje pełne zdanie ze stdin i przydzielają pamięć na stosie i zapisuje tam. W getline () przekazujemy adres pamięci, w którym powinna być przechowywana linia, adres długości linii i stdin. Następnie po prostu wyświetl linię i jej długość za pomocą funkcji printf (). Ponadto, ostatecznie użyliśmy free (), aby przestrzeń zajmowana w pamięci mogła zostać wyczyszczona, aby ponownie ją użyć.

getchar (): getchar () Funkcja służy do odczytu pierwszego znaku stdina, a putchar () służy do wyświetlania pojedynczego znaku na ekranie. Wadą getchar () i putchar () jest to, że potrafią odczytać i wyświetlać tylko jeden znak na raz, ale możemy użyć pętli do wyświetlania wszystkich znaków stdina. Aby to zrozumieć, napisz następujący kod:

#włączać
#włączać
int main ()
Char C;
int i, l;
fprintf (stdout, „Wprowadź długość ciągu:”);
fscanf (stdin, „%d” i l);
fprintf (stdout, „Wprowadź wartość:”);
dla (i = 0; i<=l; i++)

c = getC (stdin);
PUTC (C, stdout);

fprintf (stdout, „\ n”);
powrót 0;

Skompiluj kod za pomocą kompilatora GCC:

$ gcc myfile4.C -O myfile4

Wykonaj myfile4:

$ ./Myfile4

W powyższym kodzie wprowadzamy wiersz „Hello! To jest Linuxhint ”, a getchar () odczytuje pierwszy znak linii, a putchar () służy do wyświetlania linii. Najpierw zapytaliśmy użytkownika o długość łańcucha, a następnie wyświetliśmy go za pomocą pętli.

scanf (): Inną szeroko stosowaną metodą odczytu linii ze stdina jest używa funkcji „scanf ()”. Scanf przyjmuje dane wejściowe ze stdina, a następnie skanuje go i zapisuje w jakiejś zmiennej lub tablicy. Na przykład:

#włączać
int main ()
Char A [100];
fprintf („Wprowadź ciąg:”);
fscanf (stdin, „%s”, a);
fprintf (stdout, „\ nyou wprowadził następujący ciąg: %s”, a);
fprintf (stdout, „\ n”);
powrót 0;

Korzystając z kompilatora GCC, skompiluj program MyFile5.C do debugowania błędów:

$ gcc myfile5.C -O myfile5

Wykonaj myfile5:

$ ./Myfile5

W powyższym skrypcie po prostu zadeklarowaliśmy tablicę „a” za pomocą typu danych znaków, z pomocą Scanf () wzięliśmy wkład ze stdina. Wykorzystaliśmy stałą „%s”, która służy również do czytania i drukowania strun. Następnie wyświetlił ciąg przechowywany w tablicy A [], czyli „Hello”.

Wniosek

Stdin służy do przyjmowania danych wejściowych z klawiatury i może czytać na różne sposoby. Istnieją różne funkcje używane do odczytu stdina. W tym zapisie użyliśmy różnych funkcji używanych do odczytania wiersza. Wbudowana funkcja w programowaniu C to getline (), która jest używana do odczytu linii ze stdin. Ale możemy również używać innych funkcji, takich jak getchar () i scanf () do odczytu linii.