在c语言中将数字扫描成字符串

在c语言中将数字扫描成字符串,c,tolower,C,Tolower,我有一个单词列表,让我们说: Hello FAR DC2012 我需要扫描所有这些字符串并将它们放入二叉树中。除扫描外,我的程序在第三个字符串“DC2012”处失败。我猜这是因为它有数字,我正在使用“tolower”函数,但我需要使用它,所以我不确定。这是我的扫描代码: while (fscanf(afp, "%s ", words) != NULL) { for(i=0; words[i]!='\0'; i++){ words[i]=

我有一个单词列表,让我们说:

Hello
FAR
DC2012
我需要扫描所有这些字符串并将它们放入二叉树中。除扫描外,我的程序在第三个字符串“DC2012”处失败。我猜这是因为它有数字,我正在使用“tolower”函数,但我需要使用它,所以我不确定。这是我的扫描代码:

while (fscanf(afp, "%s ", words) != NULL) {

            for(i=0; words[i]!='\0'; i++){
                words[i]=(char)tolower(words[i]);
            }
            printf("%s\n", words);

它执行无限循环,使用
fgets()
而不是
scanf
。而且您不需要强制执行
tolower()

的返回,您的猜测是错误的:当字符不是大写字母时,
tolower
将其原封不动地返回。
程序失败
。它到底是如何失败的?我不太清楚,因为我使用的是visual studio,但它在第二个单词后停止打印,所以我认为它要么与以字符串形式扫描数字有关,要么与对数字使用tolower函数有关。您是如何定义
单词的
?错误消息到底是什么?定义为:字符字[1000];VisualStudio让我休息一下,带我去了“setlocal.h”,并说“ptd=_getptd();”有问题,“我不知道这是什么,它不会让我继续下去。