c - 使用指针在 C 中查找 char 的索引
问题描述
我在编写我被指示编写的程序时遇到了困难。程序应搜索出现的第一个元音的单词,然后打印出该元音的索引。如果没有元音,它应该返回 -1。
到目前为止,这是我的代码:
int firstVowel(char* string){
//Variable for case with no vowels
int notInString = -1;
int length = strlen(string);
int i;
for(i = 0; i <= length; i+=1){
if(*string == 'a' || *string == 'e' || *string == 'i' ||
*string == 'o' || *string == 'u'){
return i;
}
else if(*string != 'a' || *string != 'e' || *string != 'i' || *string != 'o' ||
*string != 'u') {
return notInString;
}
}
}
当我使用输入“abced”运行它时,它会正确返回 0。但是,当我以 fsed 运行它时,它会错误地返回 -1。
解决方案
你循环不会增加string
并且总是在进行第一次比较后返回,你想要
int firstVowel(char* string) {
//Variable for case with no vowels
int notInString = -1;
int length = strlen(string);
int i;
for (i = 0; i <= length; i += 1) {
if (*string == 'a' || *string == 'e' || *string == 'i' ||
*string == 'o' || *string == 'u') {
return i;
} else {
string++;
}
}
return notInString;
}
这将搜索整个数组,返回它看到的第一个元音的索引。notInString
在处理完整个字符串之前,它不能返回。
推荐阅读
- javascript - 如何将文件/blob 从 JavaScript 传递到 emscripten/WebAssembly (C++)?
- python - 如何从嵌套字典创建扩展的熊猫数据框?
- c++ - 在 C++ 中使用多个分隔符(包括分隔符)拆分字符串
- javascript - 如何在不设置环境变量的情况下在 Javascript 中对 Google Sheets API 进行身份验证?
- javascript - 为什么我的按钮在 Electron JS 中不起作用?
- arrays - 无法初始化十六进制数字数组:“关键字未命名类型”
- security - 显示明文时检索加密值
- javascript - 有没有办法远程测试本机反应?
- shopify - 我的 Liquid 语法是错误的,还是缺少参考?
- python - 使用正则表达式搜索和删除两个标记之间的字符串