gpt4 book ai didi

c - C 中的字符串标记

转载 作者:太空宇宙 更新时间:2023-11-04 01:29:07 25 4
gpt4 key购买 nike

我在数组中有类似“− · · · −”(摩尔斯电码)的字符串,我想对每个字符串进行标记化以获取每个单独的点 (.) 和破折号 (−)。我的部分代码如下:

char *code, *token;
char x;
char ch[4096];
code = &ch[0];

..

while((x = tolower(fgetc(fp))) != EOF){
printf("%c \n", x);
switch(x){
case 'a':
strcpy(code, "· −");
break;
case 'b':
strcpy(code, "− · · ·");
break;
case 'c':
strcpy(code, "− · − · ");
break;
case 'd':
strcpy(code, "− · ·");
break;
case 'e':
strcpy(code, "· ");
break;
case 'f':
strcpy(code, "· · − ·" );
break;
case 'g':
strcpy(code, "− − · ");
break;
case 'h':
}
if(x!= 10){
printf("Value read : %s \n", code);
token = strtok(code, " ");
while(token != NULL){
printf("CHARACTER: %s\n", token);
token = strtok(NULL, " ");
}
}

所以,当代码数组有“− − ·”时,我希望输出有:

CHARACTER: −
CHARACTER: −
CHARACTER: ·

然而,输出却有字符:- - ·我是字符串标记化的新手,可能在那里的某个地方犯了错误。也许我的定界符是错误的,我不确定。我希望我已经提供了足够的信息。对此的任何帮助将不胜感激。

提前致谢

最佳答案

问题在于字符串文字中的 (Unicode) 空白字符(例如“·········”)与 strtok() 调用中的空白字符不同。

通过 xxd 运行您的源代码并亲自看看。

据我所知,strcpy() 调用中的空格是 U+200Astrtok() 调用中的空格是 U+0020 .

关于c - C 中的字符串标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26103660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com