c - 读取文本文件和 C 中每个单词的大写首字母

标签 c text file-handling

我想读取现有文件并将每个单词的第一个字母大写。所以我想我可以从它们之间的空格中找出单词,但我不知道如何关注第一个字母所以我只把所有字母都变成大写,这是我目前的代码。

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <ctype.h>

int main()
{
int chr,i;
FILE *fp;
fp = fopen("DATA.txt" , "r");

do
{
    chr = fgetc(fp);
    chr = toupper(chr);
    printf("%c" , chr);

    if (chr==' ')
        {
            getch();
        }

} while(chr!=EOF);

fclose(fp);
}

最佳答案

... how to focus on first letter ...(?)

通过保存前一个字符来检测每个单词的第一个字母。让一个词与 1) <white-space><Letter> 的任意序列或 2) 如果读取的第一个字符是字母。

其他问题:EOF检测太晚了。检查 EOFfgetc()之后

// EOF test too late
  chr = fgetc(fp);
  chr = toupper(chr);
  printf("%c" , chr);
} while(chr!=EOF); // too late

// Instead
  chr = fgetc(fp);
  if (chr == EOF) break;

一起

int previous = ' ';
while ((chr = fgetc(fp)) != EOF) {
  if (isspace(previous) && isalpha(chr)) {
    chr = toupper(chr);  // uppercase first letter of every word
  }
  printf("%c" , chr);
  previous = chr;
}

关于c - 读取文本文件和 C 中每个单词的大写首字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41352810/

相关文章:

c - 扫描到字符串数组

c - 在不关闭/重新打开的情况下更新不断增长的文件的状态

c - memcpy 在这个程序中到底做了什么?

opengl - 在OpenGL中绘制字符串

c++ - 如何使用 fstream,在 .txt 文件中写入不同的值

c++ - 在应用程序之间共享数据——共享内存与 D-Bus 与文件操作

c - 字符串在执行中途丢失数据 C

python - 在 PyQt4 中动态更改 QLabel 文本

sql-server - SQL Server函数在列中显示词频

c++ - 在 C++ 中使用 RWCString 读取文本文件时获取 RWBoundsErr