【发布时间】:2018-07-09 10:33:52
【问题描述】:
我想将一个字符串解析为一个音符和八度。例如,如果用户输入“A#4”,则 (A#)- 将存储在 (char n) 中的音符和 (4)- 将存储在 (char o) 中的八度音阶。为什么我在 A# 之后得到空白行而不是 4 作为输出?
#include <cs50.h>
#include <stdio.h>
#include <string.h>
int main()
{
string src = get_string();
char *n;
char *o;
char *note = "ABCDEFG#b";
char *octave = "12345678";
o = strtok(src, note);
n = strtok(src, octave);
printf("%s\n", n);
printf("%s\n", o);
}
输出:
A#
您能否指出错误并提出解决方案?
【问题讨论】:
-
man strtok应该是你的朋友。抱歉,C 标准库附带了一个很好的文档。我很乐意帮助你,但请先 RTFM... -
如果你稍微搜索一下,应该有很多关于如何使用
strtok的资源、参考资料和示例。你需要它是因为你没有正确使用它。事实上,你不应该真正使用它根本,因为它不会做你希望它做的事情。相反,您应该遍历输入字符串,并手动查找音符结束和八度开始的位置。