c - strtok,使分隔符成为 ASCII 值的范围

标签 c ascii delimiter strtok

<分区>

char *p_word;

p_word = strtok (p_input, " ,.-:\n1234567890");

while (p_word != NULL)
{
    printf ("%s\n", p_word);
    p_word = strtok (NULL, " ,.-:\n1234567890");
}

我正在阅读一个文本文件,并希望一次对每个单词执行各种功能,忽略任何不属于字母表的字符。

我想知道是否有一种方法可以指定我不想要的 ASCII 十进制值范围,而不是将每个不需要的字符都键入分隔符(例如“,.-:\n1234567890”) 0-64,或其他非字母字符。

谢谢

编辑:我不允许使用没有教过的 Material ,所以我认为我不能使用“ctype.h”中的函数

最佳答案

如果您必须使用strtok,您可以像这样构建一个分隔符字符串(假定为 ASCII 字符集),它不包括字母表。

char *p_word;
char delims[128];
int dindex;
int i;

dindex = 0;
for (i = 1; i < 'A'; i++)
    delims[dindex++] = i;
for (i = 'Z' + 1; i < 'a'; i++)
    delims[dindex++] = i;
for (i = 'z' + 1; i < 128; i++)
    delims[dindex++] = i;
delims[dindex] = '\0';

p_word = strtok (p_input, delims);

关于c - strtok,使分隔符成为 ASCII 值的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34548889/

相关文章:

c - 错误包括 netinet/in.h

c - 没有类型声明的linux内核代码不是注释,这是什么意思?

c - Fscanf 和分隔符

PHP Mysqli multi_query 和触发器的分隔符

python - 如何在 Python 中拆分 1 次或多次出现的分隔符?

C - 如何更改字符

c - Keil中结构体链表错误

java - 基于控制台的 key 监听器 Java

c - 如何将十六进制 ASCII 值保存到 C 中的数组(缓冲区)?

c++ - 将整数值分配给 unsigned char