我正在创建一个程序,将单词中的所有字母(文本文件中的173528)从小写字母转换为大写字母。
这是功能:
{
"name": "reactjstest",
"version": "1.0.0",
"dependencies": {
"react": "15.4.2",
"react-dom": "15.4.2"
},
"devDependencies": {
"@types/react": "15.0.9",
"@types/react-dom": "0.14.23"
}
}
有初始化,打印和释放功能。这是我的主要功能:
void CapitalizeDictionary(char *Words[]) {
int i = 0;
while (Words[i] != '\0') {
Words[i] = Words[i] - 32;
}
i++;
}
我尝试多次更改它但不起作用。
答案 0 :(得分:7)
Words[i]
是char*
,而不是char
,但您需要将其与'\0'
进行比较。i
在循环内部没有变化。假设Words
数组及其中的字符串以空值终止,以下内容应该有效:
#include <ctype.h>
void CapitalizeDictionary(char *Words[])
{
for (int i = 0; Words[i] != NULL; i++)
for (int j = 0; Words[i][j] != '\0'; j++)
Words[i][j] = toupper((unsigned char)Words[i][j]);
}
答案 1 :(得分:0)
如果优化器没有为您执行此操作,那么快速的方法是:
for (char *p = Words[i]; *p; p++)
if (*p>='a' && *p<='z')
*p -= 32;