我正在尝试将字符串拆分为标记并将它们存储在数组中。
printf("crack_lines[0] : %s\n",crack_lines[0]);
i = 0;
char *encrypted[crack_word_count];
encrypted[i] = strtok(crack_lines[0]," ");
while(encrypted[i] != NULL)
{
printf("%s\n",encrypted[i]);
i++;
encrypted[i] = strtok(NULL, " ");
}
但是当我运行它时输出是:
crack_lines[0] : NY'X YNRJ YT UQFD YMJ RZXNH
1
w
n
我真的不确定为什么打印这个,我想知道是否有人对此有任何想法。提前感谢您的帮助。
答案 0 :(得分:1)
此功能具有破坏性:它会在中写入'\ 0'字符 字符串str的元素。特别是,字符串文字不能 用作strtok的第一个参数。
这对我有用:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int main()
{
char* crack_line = malloc(128);
strcpy(crack_line, "NY'X YNRJ YT UQFD YMJ RZXNH");
const int crack_word_count = 32;
printf("crack_lines : %s\n", crack_line);
int i = 0;
char *encrypted[crack_word_count];
encrypted[i] = strtok(crack_line," ");
while(encrypted[i] != NULL)
{
printf("%s\n",encrypted[i]);
i++;
encrypted[i] = strtok(NULL, " ");
}
}