c - 如何在不使用 strtok() 的情况下标记字符串
问题描述
我正在尝试在不使用strtok()
.
当我运行字符串字符时,它将在每一行中打印。
例如,当我运行时:
printfTokens("Hello from other side!");
输出应该是:
Hello
from
other
side!
因为我刚刚学习 C,所以我在如何实现这个程序上被困了好几个小时。到目前为止,我只知道基础知识并玩弄 not(仍然没有学习任何calloc
,mallo
c 等)。
到目前为止,我有这段代码,但输出没有打印任何内容。
#include <stdio.h>
#include <string.h>
#define MAX_WORD 100
void printfTokens(char *inputString) {
int i;
/*int inputStringLength;
for(i = 0; inputString[i] != '/0'; i++) {
inputStringLength++;
}*/
while(inputString[i] != '\0') {
char testing[MAX_WORD];
while(inputString[i] != ' ') {
testing[inputString[i]]++;
i++;
}
printf("%s", testing);
i++;
}
}
int main() {
printfTokens("TESTING ONE! TWO! THREE!");
return 0;
}
解决方案
您不初始化变量
i
。while(inputString[i] != '\0')
可以写while(inputString[i])
。testing[inputString[i]]++
从 中计算给定字符的出现次数是有意义的inputString
,但打印它没有意义。您可能想要执行以下操作:while(1) { char testing[MAX_WORD], *t=testing; while(inputString[i]&&(inputString[i]!=' ')) *t++=inputString[i++]; if (t>testing) printf("%s", testing); if (!inputString[i]) break; i++; }
最好用 name
MAX_WORD_LENGTH
而不是MAX_WORD
.
这些是您的代码中的一些问题。
推荐阅读
- azure - 值不能为空。参数名称:在 Azure 中使用 ServiceBus 触发器时的提供程序
- tally - 我们如何将 TDL 代码添加到 Tally XML 请求中
- google-apps-script - 应用脚本中有没有办法访问我的同事日历并检查他们的可用性?
- python-3.x - Python:导入模块和库
- javascript - mongoDB 集合未使用最新数据更新
- xml - 使用codesynthesis-xsd修改xml
- html - Font-Awesome 5.9.0 图标未显示在浏览器中;但 5.00 版本是
- apache-kafka - Kafka 2.2.0 中现有 ISR 的领导人选举失败
- jquery - 使用 JQuery 验证 OnInput 事件
- typescript - 如何在 JupyterLab 扩展中激活 Codemirror 插件?