puts i gets zastąpienie

0

Czy puts oraz gets można zastąpić za pomocą printf i scanf?
Ostatnie pytanie

2

można, interesując się detalami

4

Można, a gets to nawet trzeba, bo użycie tej funkcji to błąd.

2

gets (idealnie nie jest, bo jest warunek brzegowy, który nie działa poprawnie):

char s[256];
scanf("%255[^\n]%*1[\n]", s);

puts

printf("%s\n", s);
3

Bezwzględnie nie powinno się używać funkcji gets (brak możliwości określenia rozmiaru bufora, czyli prosimy się o przepełnienie). Należy używać fgets zamiast niej, można użyć też scanf, w zależności od tego co chcesz osiągnąć, bo musisz wiedzieć, że stosują one dwa zupełnie odrębne podejścia do czytania plików. fgets służy do odczytania jednej linijki, scanf w ogóle olewa różnice między białymi znakami, jeśli masz scanf napisany na 3 liczby, to nie ma znaczenia czy zostaną wpisane w jednej linice, w oddzielnych, czy będą oddzielone pustymi liniami. Trzeba mieć to na uwadze, zwłaszcza jeśli chcesz używać obu funkcji na tym samym strumieniu. Oczywiście głównym wskazaniem do używania scanf jest wczytywanie liczb. Czasem może się okazać zasadne połączenie
Analogicznie sytuacja wygląda z puts i printf, podobnie odzwierciedlają dwa podejścia do wypisywania danych. Jeśli chcemy wypisywać liczby lub kilka zmiennych w jednej linijce, używamy printf, jeśli chcemy wypisać jeden łańcuch, używamy puts. Jeśli chcemy coś wypisać, bez znaku nowej linii na końcu, też należy użyć printf. Tutaj problem z mieszaniem tych dwóch funkcji nie występuje.

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