Portál AbcLinuxu, 15. července 2025 09:42
int main(void){ int z; while((z = getchar()) != EOF){ putchar(z); } return 0; }diky za pomoc
bool space=0; if (z == ' ') { if(!space) { putchar(z); } space=1; } else { putchar(z); space=0; }Netestováno a neumím programovat.
…Netestováno a neumím programovat.Je to znát
printf("%EOF");
?
char* str = "Ahoj!"; printf("%s", str);bude se (zjednodušeně) dít toto: Funkce printf() bude číst řetězec "str" byte po bytu a podle použité převodní tabulky převádět ta čísla na znaky. Kdyby se použilo ISO-8895-1, provedl by následující kód toto:
#include <stdio.h> #include <string.h> int main() { int i; char str[] = "Lama Glama!"; for (i = 0; i <= strlen(str); i++) { int val = str[i]; printf("%d => '%c'\n", val, str[i]); } return 0; }
76 => 'L' 97 => 'a' 109 => 'm' 97 => 'a' 32 => ' ' 71 => 'G' 108 => 'l' 97 => 'a' 109 => 'm' 97 => 'a' 33 => '!' 0 => ''Používat putchar() na zjištění hodnoty znaku je tedy blbost, putchar() dělá pravý opak. Správný postup je tedy použít getchar() a vypisovat, co dostane. Hodnota EOF by měla být -1, na *NIXech se EOF z klávesnice dá vložit pomocí CTRL+D.
$ grep EOF /usr/include/stdio.h
#define EOF (-1)
takze vypisat to vies napr.
#include <stdio.h> int main() { #ifdef EOF printf ("yop, EOF is defined: %d\n", EOF); #else printf ("sorry, we don't have EOF defined\n"); #endif return 0; }no, a co sa tyka tej druhej ulohy, trosku sa potrap :). ako hint - ulozeny retazec budes prechadzat po znakoch a budes kontrolovat, ci dany znak je medzera.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.