[英]How to capitalize specific letter in an array
我正在尝试在我的 C class 中完成我的第一个家庭作业。 目标是一个数组,找到所有小写 E 并将它们转换为大写 E。
在这里和书中搜索了几个小时后,我尝试了一些变化,但无济于事。 为新手问题道歉,因为我对此很陌生。
我不允许使用除 printf 和 random_letter 之外的任何功能,所以我发现的大部分内容都不适用。
这是来自测试程序的代码
include <stdio.h>
void capitalize_e(char s[]);
int main(int argc, char *argv[]) {
char s[] = "The elephant in the room.";
printf("String before capitalizing e's: %s\n", s);
capitalize_e(s);
printf("String after capitalizing e's: %s\n", s);
}
这是我最近的尝试。
#include <stdio.h>
void capitalize_e(char s[], int size) {
int i;
char A = "e";
char B = "E";
for (i=0;i<size; i++) {
if(s[i]==A)
s[i]==B;
}
您需要知道""
之间呈现的字符串文字和''
之间呈现的字符之间的区别。
s[i]==B
其中双重相等运算符是错误的。 它用于判断条件是否为真。
void capitalize_e(char s[], int size)
应该删除其中的第二个形式参数。 并且, for (i=0; s[i];= '\0' ; i++)
应该应用。
我会将您的代码重写为类似于以下内容:
void capitalize_e(char s[], char lowerCaseChar) {
for (size_t i = 0; s[i] ; i++) {
if (s[i] == lowerCaseChar)
s[i] ^= ' ';
}
}
我会写一个通用的 function 来用另一个字符替换一个字符....然后用它用'E'替换'e'。
例如:-
char* replace_all(char* str, char target, char replacement) {
char* s = str;
while(*s != 0) {
if(*s == target) *s = replacement;
s++;
}
return str;
}
int main() {
char example[] = "The elephant in the room.";
printf("%s", replace_all(example,'e', 'E'));
}
您提到了“random_letter”,但没有在您的问题中明确谈论它。 我假设,然后您可以构建类似以下的内容。
char* replace_all(char* str, char target, char replacement) {
char* s = str;
while(*s != 0) {
if(*s == target) *s = replacement;
s++;
}
return str;
}
char capitalize(char c) {
if(c >= 'a' && c <= 'z') return 'A' + (c -'a');
return c;
}
int main() {
char example[] = "The elephant in the room.";
char letter = random_letter();
printf("%s", replace_all(example,letter, capitalize(letter)));
}
现在您已经构建了两个可以重用于其他事情的有用函数,而不是一个非常明确的 function,称为 capitalize_e
我建议检查 ASCII 表中字符的 ASCII 值。 如果你注意,你会看到大写字母将从十进制值 65 开始。例如:A = 65,B = 66,C = 67 等等。 从 97 开始,字母为小写。 因此,我会检查每个字符的十进制值并比较其范围是否大于或等于 97,如果为真则替换为 32。 您还可以将条件设置为 >=97 && <=122。
为了不破坏您的学习体验,我没有提供任何代码,并且应该相当直接地遵循并相应地解决难题。
没关系,我只是在被否决后添加了一个简短的代码片段。
int main() {
char myArray[] = "Hello World";
for(int i = 0; i < sizeof(myArray); i++) {
int decimalValueOfChar = myArray[i];
if(decimalValueOfChar >= 97 && decimalValueOfChar <= 122) {
decimalValueOfChar = decimalValueOfChar - 32;
myArray[i] = decimalValueOfChar;
}
}
printf("%s", myArray);
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.