2013-11-15 31 views
1

初学者在这里学习C. 我需要输入一段文字然后编写两个函数。大写字符串中每个单词的第一个字母并执行字数

第一个函数将文本的每个第一个字母都大写。 (这是一个例子)

第二个函数需要计算段落中的所有单词。

我正在采取的第一步是输入段落,我刚刚添加了前两句开头。如何在不将所有代码写入一行的情况下将此段格式化为此字符串?任何帮助表示赞赏。谢谢

int main (void) 
{ 

char prose[] = "She should have died hereafter; 
       There would have been a time for such a word."; 

printf("%s\n",prose); 




return 0; 
} 

这是我试图用来检测非字母符号在哪里的while循环。

while (prose[i]) 
{ 
    if (isalpha(prose[i])) 
     printf("%c is alpha\n",prose[i]); 
      else 

       printf("%c is not alpha\n",prose[i]); 
       i++; 

     } 

任何帮助从哪里移动到这里?用C

+0

0)走字符串1)检测一个单词的第一个字母(提示:它是一个字母,前面的字符是**不是**一个字母)2)将其改为大写。 3)现在第二个功能是自然而然的。 – wildplasser

+0

@wildplasser感谢您的回复。 “走绳”究竟是什么意思?我把它当作我应该使用while循环来找出什么时候没有字符存在(如搜索NULL)。我很难尝试将它写入代码。然后我想我会把32加到第一个字母的值上,使它变成一个大写字母。任何建议,我应该怎么说,while循环?感谢您的帮助 – user2990129

回答

2

相邻字符串文字被连接成一个字符串,因此您可以在跨线容易断裂这样的:

char prose[] = "She should have died hereafter;\n" 
       "There would have been a time for such a word."; 

(最终你可能想从一个文件或者是stdin阅读散文,而不是将其硬编码到您的程序中。)

要字母大写,每次遍历字符串一个字符,并且如果前一个字母不是字母表(或任何您的标准),则将每个字母表字母大写。请参阅ctype.h获取有用的功能。

对于计算单词,你可以做类似的事情,但不是修改字符串,而是每次点击一个新单词时增加一个计数器。

在这两种情况下,请检查您的代码是否正确处理了第一个单词和最后一个单词。

+0

感谢您的回复。到目前为止,我在ctype.h中使用函数isalpha来确定字符是否是字母。你如何告诉程序去到字符串中的下一个字符以将其改变为大写字母?例如,isalpha确定空间不是字母,我如何告诉它看到空间中的一个字符,然后将其提升为大写?几个小时以来一直在这个问题上,可能让我自己很尴尬 – user2990129

+0

@ user2990129那么,例如,使用一个变量来存储前一个字符是否是字母(从false开始)。然后,当你找到一个字母字符,而前一个字母不是字母时,则大写当前字符。 – Arkku

+0

原谅我问了这么多问题。有没有一种方法可以告诉你我到目前为止的代码?我是C新手,我是堆栈溢出新手,非常感谢您的帮助 – user2990129

1

我想你想的:

char prose[] = "\ 
She should have died hereafter.\n\ 
There would have been a time for such a word.\n\ 
"; 
    printf("%s\n",prose); 

\n是字符串在实际的新的生产线,在\行的末尾让语句继续下一行。

+1

是的,反斜线的续行可以作为我在我的答案中提出的替代方案。就我个人而言,我从来不喜欢那种风格,但是,因为它打破了缩进。 – Arkku

+0

@Arkku你有一个好点。但我认为这是个人喜好的问题。两条相邻的字符串可以帮助缩进,但第二个字符串看起来是孤立的。 – jaeheung

+0

当缩进到相同的级别时(特别是当有两个以上的时候),我认为它看起来不是很孤立,但是当然可以合并两个单独的字符串文字并且仍然将(多余)\放置在该行的结尾表示继续。 – Arkku

相关问题