如何访问strtok返回Token的指定索引元素及遍历字符?
关于strtok返回Token的字符遍历问题
当然可以直接用tp[index]来遍历"Today"的每个字符,原因很简单:strtok返回的指针指向了Token的首字符,而分割后的Token是标准的C风格字符串(末尾自动被strtok替换为\0),C语言里数组下标访问和指针偏移访问是完全等价的——tp[index]就是*(tp + index)的语法糖。
具体实现示例
你可以在原循环里加入这段遍历逻辑:
int index = 0; for (char *tp = strtok(strings, " "); tp != NULL; tp = strtok(NULL, " \t\n")){ // 重置索引,避免上一次的残留值影响 index = 0; // 遍历当前Token的每个字符 while (tp[index] != '\0') { // 这里可以对字符做自定义处理,比如打印 printf("当前字符:%c\n", tp[index]); index++; } // 也可以用指针自增的方式遍历,效果完全一致 // char *curr_char = tp; // while (*curr_char != '\0') { // printf("当前字符:%c\n", *curr_char); // curr_char++; // } }
注意事项
- 每次处理新的Token时,一定要把
index重置为0,否则会带着上一次循环的索引值继续,导致访问到Token范围外的内存(越界)。 strtok会修改原字符串的内容(把分隔符替换成\0),所以原字符串在调用后会被破坏,如果需要保留原数据,记得提前复制一份。
内容的提问来源于stack exchange,提问作者thegoat
相关产品推荐
相关产品推荐

