在我的程序中,我正在用strtok来减少我的焦炭。当我在Windows上检查时,它会被裁剪成我想要的,但是当我在Linux上做同样的事情时,它就错了。
例子:
Windows:
my char* (行)是:"1,21-344-32,blabla“在我第一次做strtok时,我在第二次得到"21-344-32”时得到"1“。
Linux:
my char* (行)是:"1,21-344-32,blabla“,在我第一次做strtok时,我在第二次得到"2”时得到"1“。
代码
Result FileReader::InitRead (Manager
我正在试图找出如何提取需要解析的remaning字符串(strtok_r()的第三个参数),但是对于如何这样做却不知所措。初始输入来自malloc()定义的char指针。
下面的代码就是我想要达到的目标。
num = strtok_r(raw_in, delim, &rest_of_nums);
while(rest_of_nums != NULL){
while(num != NULL){
//Compare num with fist digit of rest_of_nums
num = strtok_r(NULL, delim, &rest
我需要使用strtok函数来分析一些字符串中的每个单词。我写了这样的代码:
char *token;
token=strtok(string,symbol);
while(token!=NULL){
functionX(token); //this is a function that anlayze the token
token=strtok(NULL,symbol);
}
但是"functionX“只接收字符串的第一个单词和空指针。如果我把
printf("%s",token);
而不是functionX,而是打印字符串的每一段。我怎么才能解决这个问题
我需要我的程序接受一系列文件名(存储在一个“字符串”中,用逗号分隔),并对它们执行操作。
psuedo代码为:
for each filename in some_string
open filename
operate on contents of filename
close filename
问题是我把文件名("filename1,filename2,...,some_string“)分成了文件名1,文件名2,...文件名n。
编辑:为了澄清,让some_string保持完整并根据需要提取每个文件名似乎更简单,这就是我正在尝试做的事情。
我的代码,就像现在
大家好,我对strtok_r随意添加新行有问题,我想知道是否有人可以告诉我为什么它会这样做?据我所知,当输入的末尾有一个新行时,它会打印一个新行,但这种情况并不是每次都会发生,我也不确定为什么。我的动机是拥有一个包含多个单词的输入字符串,并让strtok_r将这些单词单独存储到一个数组(存储)中。 char delimit[] = " \t\r\n\v\f";
char *tempword; //temporary word until it is stored into the temp array
for (int r = 0; r < line_count; r+
当试图在没有被strtok_r完全处理的情况下删除/释放字符ptr时,它给我堆栈跟踪错误。
我知道,如果不通过strtok_r函数完成整个字符串分离过程,就不能以常规的方式释放/删除strtok_r char ptr。
谁能告诉我如何释放一个字符ptr,当它正在被strtok_r处理
char *data = new char[temp->size()+1];//temp is of type string
copy(temp->begin(),temp->end(),data);
data[temp->size()]='\0';
count