从文本文件中大写单词

时间:2017-02-19 13:02:31

标签: c arrays

我正在创建一个程序,将单词中的所有字母(文本文件中的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++;
}

我尝试多次更改它但不起作用。

2 个答案:

答案 0 :(得分:7)

  1. Words[i]char*,而不是char,但您需要将其与'\0'进行比较。
  2. i在循环内部没有变化。
  3. 您只是迭代顶级数组,而不是该数组中的字符串。
  4. 假设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;