前排提示:本帖讨论的东西关于编程语言特性,可能一辈子都用不到考场上
假设你有一个文件,只有一行:
arbgscwkl9023jisakxnasnx...
如果我想知道第N(N < LONG_LONG_MAX)个字符,应该怎么写?(比如我想知道第5个字符,输入5
输出s
)
一种思路是读入一定数量的字符,再读入下一个字符:
for(int i = 0; i < N - 1; i++){
getchar();
}
ans = getchar();
这个思路的变种:
for(int i = 0; i < N; i++){
ans = getchar();
}
另一种思路是直接读入一整行,把输入储存到一个字符数组str
里面,然后直接输出str[N-1]
:
gets(str);
ans = str[N-1];
但是这两种方法都需要读入不需要的字符(输入为5
时会读入多余的4个字符,gets()更甚),这大大增加了程序的运行时间。
所以有没有其他“一步到位”的方法呢?