Portál AbcLinuxu, 9. listopadu 2025 17:17
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
Kdyz si misto priznaku (byla/nebyla mezera) budes drzet cely predchozi znak, tak se ti to podstatne zjednodussi.
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.