- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
正在处理一些代码。我是 c 的初学者,所以我可能无法理解 super 复杂的语法。正如问题所述,我有一个从用户那里读入的字符串。 “catdog”,程序将其更改为帕斯卡大小写。 “CatDog” 正如您所看到的,每个单词的第一个字母都大写,并且空格被删除。这就是我遇到麻烦的地方,我不知道如何删除空格。我想过放入一个临时数组,但由于范围问题,我无法返回新的字符串数组。提前致谢。另外,我必须留在该功能内,不能创建新的功能。
#include <stdio.>
#include <stdlib.h>
#include <string.h>
char toUpperCase(char ch){ //changes char to uppercase
return ch - 'a'+ 'A';
}
char toLowerCase(char ch){//changes char to lower case
return ch -'A'+'a';
}
void PascalCase(char* word){//"cat dog" "CatDog"
/*Convert to Pascal case
It is safe to assume that the string is terminated by '\0'*/
char temp[100];//do not know how to implement
int i;
if (word[0] >= 97 && word[0] <= 122) {
word[0] = toUpperCase(word[0]);
}
for (i = 1; i < strlen(word); ++i) {
if (word[i] >= 65 && word[i] <= 90) {
word[i] = toLowerCase(word[i]);
}
if (word[i] == ' '){
++i;
if (word[i] >= 97 && word[i] <= 122) {
word[i] = toUpperCase(word[i]);
}
}
}
}
int main(){
char word[100];
printf("Enter phrase:");
fgets(word, 100, stdin);
/*Call PascalCase*/
PascalCase(word);
/*Print new word*/
printf("%s\n", word);
return 0;
}
最佳答案
您可以尝试下面的代码:
inline char toUpperCase(char c){
if('a'<=c && c<='z') return c-'a'+'A';
else return c;
}
inline char toLowerCase(char c){
if('A'<=c && c<='Z') return c-'A'+'a';
else return c;
}
void toPascalCase(char *str){
int i,j=0; bool first=true;
for(i=0;str[i];i++){
if(str[i]==' ') {first=true; continue;}
if(first) {str[i]=toUpperCase(str[i]); first=false;}
else str[i]=toLowerCase(str[i]);
str[j++]=str[i];
}
str[j]='\0';
}
由于删除空格不会增加字符串长度,因此操作可以就地完成。另外,我将大小写检查移至 toUpperCase
函数中,以便使用起来更加方便。使其内联将能够更快地实现。我尝试了不同的输入,例如“猫狗”,或“猫狗”,代码总是给你“CatDog”(帕斯卡情况)。 bool 变量 first
指示当前字符是否是空格后的第一个字符(应大写的单词的开头)。
关于将字符串更改为帕斯卡大小写,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39910062/
我有一个大问题,因为这段代码在 Dev-Pascal 中正确编译,但在 Lazarus 中却没有。 for k:=1 to n do begin writeln(a[k
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
我有一个与 Pascal 中的 for 循环工作方式相关的问题: Program example; var i:integer; Begin i:=7; for i:=1 to i
PROGRAM RandomNumber; Var rand,count,guess : integer; LABEL correct, loop, wrong, end1; begin {Initi
我是新来的,如果我做错了什么,很抱歉! 我正在 Lazarus 中制作一个简单的 Pascal 程序,编译时出现此错误: HWE(16,18) 错误:“Char”和“Constant String”类
这个问题已经有答案了: What is the implementation of sets used in pascal? (2 个回答) 已关闭 6 年前。 我明天要去参加一个高中编程比赛,他们使
我正在用 pascal 编写一个小程序,但遇到了一个小问题。在其他语言中,有一个名为“split”或“explode”的函数,用于获取由定义的字符分隔的长字符串,并将该长字符串拆分为几个较小的字符串,
我在Pascal中找了很长时间这个算法并没有找到,我只在C++中找到了它,这令人沮丧。然后我决定将 C++ 代码翻译为 Pascal,但是有一些问题我无法解决。出现错误消息“浮点溢出”。我需要帮助才能
例如,如果我有这样的数组,如何获取具有特定索引的数组的长度 TYPE T_PERSON = PACKED RECORD Example : STRING[40]; Example2 : STR
我正在尝试使用 创建 TForm 的子类 针对某些情况的特殊构造函数,以及 将保持与当前代码的兼容性的默认构造函数。 这是我现在的代码: interface TfrmEndoscopistSear
我的插入排序算法出现此错误: insertionsort.lpr(19,17) Error: Incompatible types: got "Boolean" expected "LongInt"
我的任务是在我的屏幕上显示两个图像(两个 TImage),一个是头部,另一个是尾部(硬币),并带有一个 TButton 来随机化它们。 就是当你按下按钮时,两个图像会随机选择正面或反面。 我知道这是一
我正在编写一段代码来读取 CSV 文件并从中解析信息(目前我只有代码的开头部分,它将在文件开头的标题中读取。当我尝试编译这段代码,我在行中收到一个错误,它占用了文件中行的长度。 我收到的错误是:[Er
我正在开发一个 Java 应用程序,它是关于将 Mathcad 工作表转换为 Java 应用程序的。谁能知道/建议如何用 Java 代码编写单位(牛顿、帕斯卡、毫米、千克)? 例子:1? double
我是一名优秀的程序员,十分优秀!