- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 strtok_s() 函数获取一个标记化的数组,但我还想包含标记化数组的分隔符。如果它是斜杠“/”,我希望数组在任何使用斜杠“/”字符创建的标记处都具有斜杠。
我编写了一个函数,它接受字符串和分隔符并返回另一个带有标记和分隔符的字符串。
但是,它没有按预期工作,我不知道为什么。另外,我对C语言不太擅长。
任何正确方向的帮助或指导将不胜感激。
下面是我的主 cpp 文件和控制台输出
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct token_stat {
int n; // for total items in array
char* r_array; // pointer to the array returned from function
};
// function for passing a string and a delimeter and getting back
// the array with tokenized items including the delimeter
token_stat append_token_delim(char* string_in, char splitter[])
{
token_stat result;
char* token = NULL ; // initialize variables for STRTOK_S func
char* next_token = NULL ;
char* token_accum = (char*)malloc(2*sizeof(string_in)) ; // allcate memory twice that of the string we are tokenizing
char* delim = splitter; // pointer to the delimeter in main function
int i = 0;
token = strtok_s(string_in, delim, &next_token); // first call and getting the token
while (token != NULL)
{
token_accum[i] = token[0]; // add the token to token_accum array
token_accum[i + 1] = *delim; // now add the delimeter character next to the 1st token
printf("%s\t%s\n", token, delim); // print token and the delimeter
token = strtok_s(NULL, delim, &next_token); // make call again to strtok to get next token
i = i + 2; // increment index by 2 to get to the next token
}
int numberOfTokens = sizeof(*token_accum) / sizeof(token_accum[0]); // get total items in token_accum array for printing in main
result.n = numberOfTokens; // passing values to TOKEN_STAT STRUCT
result.r_array = token_accum; // passing the array to STRUCT
return result; // returning the struct back
}
// printing the array
void print_tokens(token_stat in_array)
{ printf("Number of Tokens in Array; %d", in_array.n);
}
int main()
{
char str[] = "- Thi;s,ansample()str;ing.";
token_stat main_accum;
char delimeter = '/';
main_accum = append_token_delim(str, &delimeter);
print_tokens(main_accum);
return 0;
}
最佳答案
您想在 token_accum 中存储多个字符串,但只存储第一个字符 token_accum[i] = token[0];
要存储多个字符串,您需要一个指针数组你可以像这样存储字符串
token_accum[i] = token;
关于c - 未从 strtok_s() 获取标记化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58255817/
我不明白为什么我的函数会收到以下消息(在 Visual Studio 2015 中)。 0xC0000005: Access violation reading location 0x0000002C
我试图在点上拆分我的实际 key ,然后在点上拆分后提取所有字段。 我的 key 看起来像这样 - t26.example.1136580077.colox 下面是我印象中的代码,应该没问题。但不知何
我已经使用 C++ 多年了,所以请多多包涵。 我是一名 C# 开发人员,但这个 C++ 控制台应用程序坏了,我现在正在管理它。我目前正在使用 VS2010 对其进行调试。 由于保密和代码量大,我不能贴
我正在使用 strtok_s 根据用户输入从 C 字符串中提取一个值。但是,我需要能够多次调用此函数。目前,当我这样做时,它在通过 strtok_s 时遇到了问题。我相信,因为它仍然指向不同的位置,而
传递给它的每个参数到底是什么,它返回什么? 它到底比普通的 strtok 好多少? 请给我最简单和最基本的解释。 最佳答案 这在 Appendix K (bounds checking interfa
15 年后我又回到了 C++ 领域……我只是不记得为什么我们需要指针的地址。就像在这个声明中: char *next_token = NULL; char *pszMozilla = strtok_s
我正在并行解析 3 个用特定分隔符分隔的值。 token1 = strtok_s(str1, separator, &nextToken1); token2 = strtok_s(str2, sepa
我正在尝试使用 strtok_s 函数标记嵌套循环中的两个字符串,但是我无法解析由 delimeter(;) 分隔的完整字符串,其代码是 char* string1Bigrams = "he;el;l
我正在尝试使用 strtok_s() 函数获取一个标记化的数组,但我还想包含标记化数组的分隔符。如果它是斜杠“/”,我希望数组在任何使用斜杠“/”字符创建的标记处都具有斜杠。 我编写了一个函数,它接受
我正在尝试根据此示例通过指定的分隔符拆分字符串:http://msdn.microsoft.com/en-us/library/ftsafwz3(v=VS.90).aspx 我的代码在 Visual
我是 C++ 的初学者,我正在尝试通过使用带有 strtok_s 的标记将文本从文本文件放入 vector 中。 我只能将一个文本推回并显示在 vector 中,我确信我的编码存在一些问题。 代码如下
似乎已经修改了我想拆分指定标记的原始字符串。 如果无法从内存中复制,它如何返回一个子字符串? 我也在寻找接受 const char* 或不修改原始字符串的替代方案。 或者仅const_cast 字符串
(大家好)我的strtok_s有一些问题。我写了这段代码(x64)。 #include #include #include BOOL TestMD5(CONST
strtok_s函数在vc8中有,vc7中没有。那么,在 vc7 中执行相当于 strtok_s 的函数(或代码)是什么? 最佳答案 看看this MSDN page . 据我所知,安全性增强 a)
我将 strtok_s 与分配的字符串一起使用。 上面的代码处理异常: char *string1 = NULL; string1 = (char*)LocalAlloc(LPTR, 100 * si
我正在尝试使用 C11 函数 strtok_s ,应该在 中定义,但是当我尝试使用它时,clang 给我一个链接错误。编译这个程序: #include int main() { char
我正在尝试从由空格 ("") 分隔的字符串中获取 token 。但是当字符串是 char * 类型时,下面的代码会导致应用程序崩溃。 #include #include int main(){ c
我有以下程序: #include #include #include int main(int argc, char *argv[]) { char *tp = NULL, *cp = N
我在这里的搜索得到了很多结果,但没有一个非常适合我,以便我可以找到问题的解决方案。 我正在使用 Visual Studio 2013 用 C 语言创建 Mathcad UserEFI DLL。我不想使
我是一名优秀的程序员,十分优秀!