Okomentování kódu – C / C++ – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Okomentování kódu – C / C++ – Fórum – Programujte.comOkomentování kódu – C / C++ – Fórum – Programujte.com

 

Buchal
~ Anonymní uživatel
2 příspěvky
31. 10. 2011   #1
-
0
-

Zdravim. Měl bych takovou menší prosbu. Našla by se tu nějaká dobrá duše, která by mě mohla okomentovat nasledující kod? Nebo alespoň vysvětlit, proč se v něm vyskytují dva naprosto stejné cykly? Vím, že tento kod má převádět zadaný údaj na číslo a přitom nemá brát v úvahu ani písmena a ani znaky, ale prostě nechápu, proč tam jsou ty cykly dva. Předem děkuji za odpověď.

#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ( void )
{
  int i = 0;
  char s[BUFSIZ];
  int ch;

  while ( ( ch = getc ( stdin ) ) != EOF ) {
    if ( isdigit ( ch ) )
      break;
  }

  if ( !feof ( stdin ) ) {
    s[i++] = ch;

    while ( ( ch = getc ( stdin ) ) != EOF ) {
      if ( !isdigit ( ch ) )
        break;
      s[i++] = ch;
    }

    ungetc ( ch, stdin );
    s[i] = '\0';

    printf ( "The number is %d\n", atoi ( s ) );

    if ( fgets ( s, sizeof s, stdin ) != NULL ) {
      s[strcspn ( s, "\n" )] = '\0';
      printf ( "The rest of the stream contains \"%s\"\n", s );
    }
  }

  return 0;
}
Nahlásit jako SPAM
IP: 88.102.140.–
devilfish0
Stálý člen
31. 10. 2011   #2
-
0
-

Prvy cyklus najde zaciatok cisla a ten druhy nacita to cislo tj. prvy nacitava znaky az pokial nenarazi na cislicu(koniec cyklu) a potom druhy nacitava znaky kym je znak cislica. Vsimni si ze v prvom je isdigit() a v druhom !isdigit()

Nahlásit jako SPAM
IP: 188.121.172.–
Buchal
~ Anonymní uživatel
2 příspěvky
31. 10. 2011   #3
-
0
-

Jo dík moc. Teď už to chápu.

A ještě jedna věc. Jak by se do toho dalo zakomponovat ošetření toho, zda to zadaný číslo bude, nebo nebude větší, než ULONG_MAX? 

Nahlásit jako SPAM
IP: 88.102.140.–
zlz
~ Anonymní uživatel
634 příspěvků
1. 11. 2011   #4
-
0
-

Místo atoi() můžeš použít strtoul() - u toho se dá zjistit, jestli při konverzi došlo k chybě, nebo překročení rozsahu. Viz. dokumentace.

Nahlásit jako SPAM
IP: 213.211.51.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 10 hostů

Podobná vlákna

Vysvětlení kódu — založil ingiraxo

Zakomentování kódu — založil PRojekt

Zkrácení kódu — založil oxidián

Zjednodušení kódu — založil sXe

Konzultace kodu, while — založil shockwave

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý