我有一个输入文件,其中有2个非常长的数字(某处为10 ^ 4位),用空格分隔。我要做的就是读取它们,从最后一位到第一位,将它们放在两个独立的数组中。 以下是2个简短数字的示例:
1234 5678
我的程序需要像[] = {4,3,2,1}和n [] = {8,7,6,5}这样的数字才能工作。是可能的,还是我必须阅读它们并重新排序数字?谢谢你的帮助!
答案 0 :(得分:0)
嗯,你至少有3个选择,你已经说过了。
另外两个选项是:
POSIX兼容(例如Linux)解决方案类似于:
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#define error(msg) \
{ \
perror(msg); \
exit(-1); \
}
int main()
{
int i; /* Loop index. */
struct stat s; /* stat structure. */
int fd; /* File descriptor.*/
char *file; /* Mapped file. */
/* Open the file. */
if ( (fd = open("file", O_RDONLY)) < 0 )
error("Failed open file");
/* File size. */
if ( fstat(fd, &s) < 0 )
error("Failed to stat file");
/* Maps the file into memory. */
if( (file = mmap(0, s.st_size, PROT_READ, MAP_PRIVATE, fd, 0)) == MAP_FAILED)
perror("Failed to map file");
/* Starts reading. */
for (i = s.st_size; i >= 0; i--)
printf("%c", file[i]);
return 0;
}
如果您想在Windows中执行某些操作,我建议您阅读:Managing Memory-Mapped Files。