小编Ton*_*ony的帖子

我需要帮助,将文件大块地输入到mmap中

我正在尝试使用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上进行迭代的帮助。

c mmap

3
推荐指数
1
解决办法
912
查看次数

在c中解析char数组

我正在尝试解析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)

c pointers tokenize

1
推荐指数
1
解决办法
6947
查看次数

标签 统计

c ×2

mmap ×1

pointers ×1

tokenize ×1