gpt4 book ai didi

c - 如何将C中数组中每个单词的首字母大写

转载 作者:行者123 更新时间:2023-12-01 01:25:58 24 4
gpt4 key购买 nike

我正在尝试制作一个简单的程序,将用户输入的句子存储在最多 80 个字符的数组中,然后将句子中的每个单词大写。我认为我在正确的轨道上,但是当我运行程序时,只显示句子的第一个单词。

#include<stdio.h>
int main(void)
{
int i; /*indexing integer*/
char sen[81]; /*specify total of 80 elements*/
printf("Enter a sentence no longer than 80 characters: \n\n");
scanf("%s",sen);
if((sen[0]>='a') && (sen[0]<='z'))
{
sen[0]=(char)(sen[0]-32); /*-32 in ascii to capitalize*/
}
for(i=0;sen[i]!='\0';i++) /*loop until null character*/
{
if(sen[i]==' ') /*if space: next letter in capitalized*/
{
if((sen[i+1]>='a') && (sen[i+1]<='z'))
sen[i+1]=(char)(sen[i+1]-32);
}
}
printf("%s",sen);
return 0;
}

由于 scanf 之后的第一个 if 语句,我感觉它只打印数组中的第一个单词,但我不完全确定。任何帮助,将不胜感激。谢谢。

最佳答案

默认情况下,%s 转换说明符导致 scanf 在第一个空白字符处停止。因此,您可以使用 %80[^\n] 格式或 fgets 函数。

#include <stdio.h>

scanf("%80[^\n]", sen);

或者:

#include <stdio.h>

fgets(sen, sizeof sen, stdin);

但是,由于 scanf 读取格式化数据,人工输入不适合此类读取。所以 fgets 应该在这里更好。

关于c - 如何将C中数组中每个单词的首字母大写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15724799/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com