我想读取现有文件并将每个单词的第一个字母大写。所以我想我可以从它们之间的空格中找出单词,但我不知道如何关注第一个字母所以我只把所有字母都变成大写,这是我目前的代码。
#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
检测太晚了。检查 EOF
在fgetc()
之后
// 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/