该程序的目标是能够提取字符串(char)中的整数,前提是它们位于一组括号内。如果字符串不满足这些要求,我还想打印出一条错误消息。
例如:char str = "( 1 2 3)";
这将打印它找到整数 1、2 和 3。但是假设 str ischar str = " 1 2 3( 4 5 6);
会返回对我的错误函数的调用,因为它的格式不正确。如果字符串包含任何不是数字或空格的其他内容,它也应该打印错误。最后,假设检查括号内的内容,直到找到结束括号。
目前,我可以搜索任何字符串并提取整数,但我无法弄清楚如何确定除了数字之外是否还有其他内容,只能检查括号内的内容。
void scanlist(char *str)
{
char *p = str;
while (*p) {
if ((*p == '-' && isdigit(p[1])) || (isdigit(*p))) {
int val = strtol(p, &p, 10);
on_int(val);
}
else {
p++;
}
}
我曾尝试在 while 之后放置另一个 if 语句,看看它是否以 '(' 开头,但它什么也没做。请谢谢!