2010-10-31 2 views
-3

почему 9 является обязательным при вводе полукокса [9]С какой функцией этой функции?

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 не является обязательным. Не могли бы вы перефразировать свой вопрос? –

+0

Вопрос не очень хорошо отредактирован и очень расплывчатый! пожалуйста, переформулируйте! – dm76

ответ

2

Это не так. Это просто означает, что буфер составляет 9 символов. fgets должен знать это, чтобы избежать переполнения буфера. Он может читать 8 символов, потому что 1 необходим для NUL. Было бы чище писать:

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

во избежание избыточности.

Если вы сделаете буфер меньше, вы, возможно, не сможете прочитать все данные, поэтому программа перестает работать правильно. Если он больше, может быть (более) неиспользуемое буферное пространство.

+ 6 средства atoi начинает отсчет с 7-го символа.

+0

, но сменить на 8, программа будет работать неправильно. – friends

+0

Выходной результат char input [9] (вход 47 в формах) 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, ... результат результата char input [8] (ввод 10 в формах) 0, ... – friends

+0

если я вхожу 9 в веб-формы, насколько велика символ «9»? , если я вхожу 10 в веб-формы, насколько большой символ «10»? – friends

Смежные вопросы