【发布时间】:2014-09-29 15:39:31
【问题描述】:
我在一个数组中有像“- · · · -”(摩尔斯电码)这样的字符串,并且想要对每个字符串进行标记以获取每个单独的点(。)和破折号(-)。我的部分代码如下:
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: ·
然而,输出却是 CHARACTER: − − · 我是字符串标记的新手,可能在某处犯了错误。也许我的分隔符是错误的,我不确定。我希望我已经提供了足够的信息。对此的任何帮助将不胜感激。
提前致谢
【问题讨论】:
-
注意:使用
int x;将EOF与所有其他char区分开来。 -
顺便说一句:您是否声明字母之间的间隔无关紧要?
-
另外,考虑进行表查找而不是切换。
-
其实你没事。实际上,我已经从在线资源中复制粘贴了莫尔斯电码(点划线序列)。在那里,空间似乎与滚动条给出的空间不同。这就是分隔符不匹配的原因。谢谢大家!!