为什么9是char输入必须[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 :(得分:2)
不是。它只是意味着缓冲区是9个字符。 fgets
需要知道避免缓冲区溢出。它可以读取8个字符,因为NUL需要1个字符。写作会更清晰:
int getInput (void) {
char input[9];
fgets(input, sizeof(input), stdin);
return atoi(input + 6);
}
避免冗余。
如果使缓冲区变小,显然可能无法读取所有输入,这就是程序无法正常工作的原因。如果它更大,则可能存在(更多)未使用的缓冲区空间。
+ 6
表示atoi
开始读取第7个字符。