【发布时间】:2014-11-12 14:30:29
【问题描述】:
我有一段代码循环遍历一个 char 数组字符串以尝试检测单词。它循环遍历,如果检测到 A - Z 或 a - z 或 _(下划线),它将把它添加到 char 数组中。因为它们是单词,所以我需要的是能够将它们放入一个字符串中,然后我可以使用另一个函数进行检查,然后可以将其丢弃。 这是我的功能:
char wholeProgramStr2[20000];
char wordToCheck[100] ="";
IdentiferFinder(char *tmp){
//find the identifiers
int count = 0;
int i;
for (i = 0; i < strlen(tmp); ++i){
Ascii = toascii(tmp[i]);
if ((Ascii >= 65 && Ascii <= 90) || (Ascii >= 97 && Ascii <= 122) || (Ascii == 95))
{
wordToCheck[i] = tmp[i];
count++;
printf("%c",wordToCheck[i]);
}
else {
if (count != 0){
printf("\n");
}
count = 0;
}
}
printf("\n");
}
目前我可以看到所有单词,因为它将它们打印在不同的行上。
WholeProgram2 的内容是文件的所有行。它是 *tmp 参数。
谢谢。
【问题讨论】:
-
永远不要与幻数比较。使用
isalpha()和'-'。 -
您当前已经填充了
wordToCheck数组(但删除了=""初始化器,全局变量为zero initialized,因此您将在数组中获得一个以NUL 结尾的字符串,因为tmp是不要太长。)它是一个全局变量,您可以从其他函数访问它。请说明您想要什么或问题是什么。 -
Ascii = toascii(tmp[i]);到底是什么?Ascii在哪里定义?它的类型是什么? -
你能解释一下你用什么分隔符来解析来自
wholeProgramStr2的单词。通常,空格、制表符等用作此类解析的分隔符。这是你在做什么?