如何解决strtok_s 忽略第一个字符
我在每个 strtok_s
之后进行检查以查看我得到了什么,但第一个单词仅在 4 个字符之后计数。
我的代码:
void zeros()
{
char buffer[81];
fgets(buffer,sizeof(buffer),stdin);
printf("%s\n",buffer);
char *command = strtok_s(buffer," \t",&buffer);
printf_s("the command you selcted is %s\n",command);
char *Matname = strtok_s(NULL,&buffer);
printf_s("the name you selcted is %s\n",Matname);
char *row = strtok_s(NULL," \t",&buffer);
printf_s("the rowsize you selcted is %s\n",row);
char *col = strtok_s(NULL,&buffer);
printf_s("the colsize you selcted is %s\n",col);
return 0;
}
解决方法
strtok_s
的最后一个参数不正确,它应该是一个指针,strtok_s
用来存储其内部状态。
您的函数应该更像这样:
void zeros() // or int zeros() if it's supposed to return int
{
char buffer[81];
char *ptr;
fgets(buffer,sizeof buffer,stdin);
printf("%s\n",buffer);
char *command = strtok_s(buffer," \t",&ptr);
printf_s("the command you selcted is %s\n",command);
char *Matname = strtok_s(NULL,&ptr);
printf_s("the name you selcted is %s\n",Matname);
char *row = strtok_s(NULL," \t",&ptr);
printf_s("the rowsize you selcted is %s\n",row);
char *col = strtok_s(NULL,&ptr);
printf_s("the colsize you selcted is %s\n",col);
// return 0; // if function return type is int
}
另一个问题(尽管不是主要问题)是该函数具有 void
返回类型并返回一个 int
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。