Co oznacza %s I % d w printf w języku C? [zamknięte]
Nie rozumiem co robią %s
i d%
w tym kodzie C:
for (i=0;i<sizeof(code)/sizeof(char*); i++) {
printf("%s%d%s%d\n", "Length of String ", i, " is ", strlen(code[i]));
str = code[i];
printf("%s%d%s%c\n","The first character in string ", i, " is ", str[0]);
}
Jestem nowy w języku C, a moje tło jest w Javie.
- co oznaczają
%s%d%s%d
symbole? - dlaczego jest ich tak wielu?
- czy do konkatenacji używany jest przecinek zamiast
+
?
9 answers
Rodzina funkcji printf() używa znaku %
jako elementu zastępczego. Po napotkaniu %
, printf odczytuje znaki następujące po %
, aby określić, co należy zrobić:
%s - Take the next argument and print it as a string
%d - Take the next argument and print it as an int
Zobacz ten artykuł Wikipedii dla ładnego obrazu: printf format string
\n
na końcu łańcucha znajduje się znak nowej linii / karetki-powrotu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-26 23:29:05
% zapis nazywa się określnikiem formatu. Na przykład %d mówi printf (), aby wypisała liczbę całkowitą. %s wyświetla łańcuch znaków (char *) itd. Naprawdę powinieneś to sprawdzić tutaj: http://google.com/search?q=printf + format + Specyfikacja
Nie, przecinki nie są używane do łączenia łańcuchów. Przecinki służą do oddzielania argumentów przekazywanych do funkcji.
Pierwszy argument oznacza symbole zastępcze dla następujących zmiennych / parametrów.
Na przykład, %s
oznacza, że spodziewasz się, że String
będzie twoim pierwszym parametrem print.
Java ma również printf
, który jest bardzo podobny.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-26 23:28:30
%d jest wyświetlany jako int % s jest drukowane jako ciąg znaków % f jest wyświetlany jako zmiennoprzecinkowy
Należy zauważyć, że błędem jest stwierdzenie, że różni się to od Javy. Printf oznacza format wydruku, jeśli wykonujesz sformatowany druk w Javie, jest to dokładnie to samo użycie. Może to pozwolić na rozwiązywanie ciekawych i nowych problemów zarówno w C jak i Javie!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-27 00:04:54
Pierwszy argument printf
jest ciągiem identyfikatorów.
%s odnosi się do ciągu znaków %d odnosi się do liczby całkowitej %c odnosi się do znaku. Dlatego: %S%D % s % c\n wypisuje łańcuch "pierwszy znak w żądle", %d wypisuje i, %S wypisuje "is", a %c wypisuje str [0].
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-26 23:29:40
%S jest dla ciągu %d jest dziesiętne (lub int) %c jest dla znaku
Wydaje się żuć przez tablicę znaków i drukować dowolny ciąg znaków, począwszy od każdej kolejnej pozycji. W każdym przypadku łańcuchy zatrzymują się na pierwszym null.
Przecinki są po prostu oddzieleniem argumentów do funkcji, która przyjmuje zmienną liczbę args; liczba ta odpowiada liczbie % args w deskryptorze formatu z przodu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-26 23:29:41
"%s%d%s%d\n"
jest łańcuchem formatowania; mówi on funkcji printf
jak formatować i wyświetlać dane wyjściowe. Wszystko w łańcuchu formatu, który nie ma %
bezpośrednio przed nim, jest wyświetlane tak, jak jest.
%s
i %d
są specyfikatorami konwersji; mówią printf
Jak zinterpretować pozostałe argumenty. %s
mówi printf
, że odpowiadający argument ma być traktowany jako ciąg znaków (w terminach C, ciąg zakończony 0 char
); Typ odpowiadającego argumentu musi być char *
. %d
mówi printf
, że odpowiadający argument ma być traktowany jako wartość całkowita; typem odpowiadającego argumentu musi być int
. Ponieważ wywodzisz się z tła Javy, ważne jest, aby pamiętać, że printf
(podobnie jak inne zmienne funkcje) polega na , , aby powiedzieć mu, jakie są typy pozostałych argumentów. Jeśli ciąg formatujący był "%d%s%d%s\n"
, printf
próbowałby traktować "Length of string"
jako wartość całkowitą i i
jako ciąg znaków, z tragicznymi skutkami.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-26 23:54:06
%(letter) oznacza typ formatu zastępczego tekstu. %s określa ciąg znaków, %d liczbę całkowitą, a %c znak.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-26 23:29:46
%S % d % s % D\N jest ciągiem formatującym. Służy do określenia sposobu formatowania informacji na wyjściu. tutaj format string ma drukować ciąg, po którym następuje Cyfra, a następnie ciąg, a następnie ponownie cyfra. Ostatni symbol \n oznacza powrót karetki oznaczający koniec linii. W języku C ciągi znaków nie mogą być łączone przez + lub, chociaż można łączyć różne wyjścia w jednej linii za pomocą odpowiednich ciągów formatujących (użycie ciągów formatujących polega na formatowaniu wyjścia info.).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-01-26 23:33:36