萌新求助!C99中的宽字符问题
为了更好的保存和处理汉字,我在程序中统一使用宽字符“wchar_t”来代替“char”,现在需要分割 wchar_t * 字符串,但是使用方法 wcstok 以后报错,不能正常使用。DEBUG也查看不了具体错误,只有“分段错误”。
求助大佬们!
wchar_t *data = malloc(sizeof(wchar_t *)), *tmp;
*data =0;
data = ...;
tmp = wcstok(data, L",");
tmp = wcstok(NULL, L",");
...
wcstok 只有 2 个参数吗? 傻眼貓咪 发表于 2022-3-31 23:41
wcstok 只有 2 个参数吗?
是呀,只有两个参数 #include <stdio.h>
#include <string.h>
#include <locale.h>
int main(void) {
// 例如给data分配100字符空间,应该这样:
// wchar_t *data =malloc(sizeof(wchar_t) * 100);
// 而不是:
//wchar_t *data = malloc(sizeof(wchar_t *));
// 这里我为了省事用下面的:
wchar_t data[] = L"宽字符,123,456";
wchar_t* tmp;
setlocale(LC_ALL, "chs"); // 设置简体中文区域,否则不能输出中文
tmp = wcstok(data, L",");
while (tmp) {
wprintf(L"%ls\n", tmp);
tmp = wcstok(NULL, L",");
}
return 0;
}
hrpzcf 发表于 2022-4-1 01:59
为什么一定要乘以字符空间的数量呀?好多时候输入都是不定长的... 本帖最后由 hrpzcf 于 2022-4-1 04:32 编辑
Levi_Marvin 发表于 2022-4-1 03:11
为什么一定要乘以字符空间的数量呀?好多时候输入都是不定长的...
不乘以一个数,分配的就是一个空间而已啊,比如你写的sizeof(wchar_t *),分配的就是一个wchar_t指针的空间,sizeof(wchar_t)分配一个wchar_t的空间,sizeof(wchar_t) * 100分配100个whcar_t的空间,不难理解吧。
至于你说的输入不定长的问题,随机应变,毕竟malloc、realloc等等都能分配内存,空间不够了再给它加多点就行了呗
hrpzcf 发表于 2022-4-1 04:21
不乘以一个数,分配的就是一个空间而已啊,比如你写的sizeof(wchar_t *),分配的就是一个wchar_t指针的 ...
这个还是不行,然后我该用swscanf解决了
页:
[1]