我正在尝试使用mmap使用1024的块读取文件。
这是一个代码片段...。
numberOfBuffers = filesize / buffersize;
if (filesize % buffersize)
{
numberOfBuffers++;
}
for (i = 0; i < numberOfBuffers; i++) {
if((map = mmap(NULL, buffersize, PROT_READ, MAP_PRIVATE, fd, i * buffersize)) == MAP_FAILED) {
perror("map failed");
}
if(munmap(map, buffersize) == -1) {
perror("unmap failed");
}
}
Run Code Online (Sandbox Code Playgroud)
我在第二次迭代中收到“非法参数”错误。
我希望了解mmap,并寻求有关如何使用定义的缓冲区大小在mmap上进行迭代的帮助。
我正在尝试解析ac char数组.这是为了课堂,所以我必须使用c.我在分割令牌时遇到问题
我需要能够接受以下格式的两个不同参数:[1234]或[1234 abcd]
当我解析"[1234 abcd]"时,我没有任何问题.但是,当我尝试解析"[1234]"时,我得到一个"不匹配"的错误.虽然,当我尝试"[1234]"时,我没有任何问题.
谁能告诉我为什么会这样呢?
以下是我的测试代码:
$ ./parsemem
Splitting string "[1234 abcd]" into tokens:
ip1:1234, ip2:abcd
var1:1234, var2:abcd
Run Code Online (Sandbox Code Playgroud)
parsemem.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//int parse()
int parse(char *str, char *v1, char *v2)
{
char string[11];
strcpy(string,str);
char * pch;
char ip[1][5];
int i=0;
printf ("Splitting string \"%s\" into tokens:\n",string);
pch = strtok (string," []");
while (pch != NULL)
{
strcpy(ip[i],pch);
pch = strtok (NULL, " []");
i++;
}
printf("ip1:%d, ip2:%s\n", atoi(ip[0]), ip[1]);
strcpy(v1,ip[0]);
strcpy(v2,ip[1]);
return 0; …Run Code Online (Sandbox Code Playgroud)