关于一个奇葩的读入想法
  • 板块灌水区
  • 楼主HairlessVillager
  • 当前回复16
  • 已保存回复16
  • 发布时间2020/6/29 22:39
  • 上次更新2023/11/6 23:53:27
查看原帖
关于一个奇葩的读入想法
315991
HairlessVillager楼主2020/6/29 22:39

前排提示:本帖讨论的东西关于编程语言特性,可能一辈子都用不到考场上


假设你有一个文件,只有一行:

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()更甚),这大大增加了程序的运行时间。

所以有没有其他“一步到位”的方法呢?

2020/6/29 22:39
加载中...