输入一个字符串,将其逆序后输出。(C语言实现版本)
本代码考虑了缓冲区溢出,增加了对于输入字符串超出初始缓冲区大小的判断并重新分配内存,适应性更好。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define BUF_SIZE 4096 // 初始缓冲区大小
int main()
{
char *str = (char *) calloc(BUF_SIZE, sizeof(char)); // 初始化输入缓冲区
int i = 0; // 实际输入字符个数
int times = 1; // 实际缓冲区大小是BUF_SIZE的倍数
while((str[i++] = getchar()) != EOF)
{
if(i >= times * BUF_SIZE)
{
times++; // 缓冲区每次增加 BUF_SIZE Bytes
realloc(str, times * BUF_SIZE);
}
}
for(int j = i - 2; j >= 0; j--) // 逆序输出,跳过最后输入的EOF
{
putchar(str[j]);
}
free(str); // 别忘了释放为字符串缓冲区分配的内存空间
return 0;
}