2010-10-31 6 views
-3

pourquoi 9 est un must en entrée char [9]C quelle est la fonction de cette fonction?

int getInput (void) { 
    char input[9]; 
    fgets(input, 9, stdin); 
    return atoi(input + 6); 
} 


void printHeader(void) { 
    printf("Content-type: text/html\n\n"); 
    printf("<html>\n"); 
    printf("<head>\n"); 
    printf("<title>%s</title>\n", PROGRAM_NAME); 
    printf("</head>\n"); 
    printf("<body style='padding:25px;'>\n"); 
} 

void printFooter(void) { 
    printf("</body>\n"); 
    printf("</html>\n"); 
} 

int main() { 
    int n=0; 
    int last1 = 0; 
    int last2 = 1; 
    int current; 
    int max_n = getInput(); 

    printHeader(); 
    printf("<h2>%s</h2>\n", PROGRAM_NAME); 
    printf("The first %d Fibonacci numbers are: \n", max_n); 
    printf("<br />"); 

    while (n < max_n) { 
     if (n == 0) { 
      current = 0;   
     } else if (n == 1) { 
      current = 1; 
     } else { 
      current = last2 + last1; 
     } 
     printf("%d, ", current); 
     last1 = last2; 
     last2 = current; 
     n++; 
    } 
    printf("...\n"); 
    printFooter(); 
    return 0; 
} 
+0

9 n'est pas un must. Pourriez-vous essayer de reformuler votre question? –

+0

La question n'est pas bien éditée et très vague! reformulez s'il vous plaît! – dm76

Répondre

2

Ce n'est pas. Cela signifie simplement que le tampon contient 9 caractères. fgets doit savoir que pour éviter un débordement de tampon. Il peut lire 8 caractères, car 1 est nécessaire pour NUL. Il serait plus propre d'écrire:

int getInput (void) { 
    char input[9]; 
    fgets(input, sizeof(input), stdin); 
    return atoi(input + 6); 
} 

pour éviter la redondance.

Si vous réduisez la taille du tampon, il se peut que vous ne puissiez pas lire toutes les entrées, ce qui explique pourquoi le programme ne fonctionne plus correctement. Si elle est plus grande, il peut y avoir (plus) d'espace tampon inutilisé. Le + 6 commence à lire à partir du 7ème char

+0

mais passez à 8, le programme ne fonctionnera pas correctement. – friends

+0

sortie résultat entrée char [9] (entrée 47 dans les formulaires) 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 2584, 4181, 6765, 10946, 17711, 28657, 46368, 75025, 121393, 196418, 317811, 514229, 832040, 1346269, 2178309, 3524578, 5702887, 9227465, 14930352, 24157817, 39088169, 63245986, 102334155, 165580141, 267914296. , 433494437, 701408733, 1134903170, 1836311903, ... résultat de sortie entrée char [8] (entrée 10 dans les formulaires) 0, ... – friends

+0

si j'entre 9 dans les formulaires Web, quelle est la taille du caractère "9"? Si j'entre 10 dans des formulaires Web, quelle est la taille du caractère "10"? – friends

Questions connexes