【发布时间】:2014-12-23 19:57:57
【问题描述】:
我正在尝试将第一个字母大写。字符是从文本文件中读取的。不幸的是,我不能。我读到一个想法,它说添加两个布尔变量,这可能是 int 类型:当当前字符是单词的一部分时,一个变量将保持 1,当前一个字符是单词的一部分时,另一个变量将保持 1。但是,我怎么知道 char 是否是 word 的一部分?
#include <stdio.h>
void cpt(char x[]);
int main(){
cptlz("in.txt");
return 0;
}
void cptlz(char x[]){
char ch;
int currentch,
previouschar,
st=1;
FILE *fptr_in;
if((fptr_in=fopen(x,"r"))==NULL){
printf("Error reading file\n");
}
else{
while(st==1){
st=fscanf(fptr_in,"%c",&ch);
if (ch >= 'a' && ch <= 'z'){
printf("%c",ch-32);
}
else
printf("%c",ch);
}
}
}
【问题讨论】:
-
一种简单的方法是检查前一个字符是否为空格、换行符、特殊字符......而当前字符是否为字母......这意味着你在一个单词的开头(注意,“... a word” woukd 会导致“... A Word”)
-
想想吧。首先弄清楚哪些字符在单词中可以找到,哪些不是。
-
你的函数应该做什么?你有不同的名字,它的参数
x似乎没有被使用,...请在提问之前整理好你的问题和你的代码。投票结束。 -
另请注意,
fscanf(和家人)使用"%s"格式读取空格 分隔的“单词”。