gpt4 book ai didi

将用户输入转换为字符数组,并过滤​​其他字符中的字母?

转载 作者:行者123 更新时间:2023-11-30 20:59:56 25 4
gpt4 key购买 nike

#include "stdafx.h"
#include "stdlib.h"
#include <ctype.h>

int num = 0;
int i = 0;
int ch = 0;

int letter_index_in_alphabet(int ch) {

if (isalpha(ch) == true) {
char temp_str[2] = { ch };
num = strtol(temp_str, NULL, 36) - 9;
printf("%d is a letter, with %d as its location in the alphabet!", ch, num);
}
else {
return -1;
}

}

int main()
{
char input_str[10];
printf("Please enter a series of up to 10 letters and numbers: \n");

fgets(input_str, 10, stdin);

for (i == 0; i <= 10; i++) {
ch = input_str[i];
letter_index_in_alphabet(ch);

}

return 0;
}

大家好,这是我在SOF上的第一篇文章!该程序的目标是将标准输入中的字符读取到 EOF。对于每个字符,报告它是否是字母。如果是字母,则打印出其在字母表中的相应索引(“a”或“A”= 1,“b”或“B”= 2..等)。我一直在 stackoverflow 上搜索其他一些帖子,这帮助我走到了这一步(使用 fgets 和 strtol 函数)。当我运行此代码时,没有明显的语法错误,但在输入字符串(例如:567gh3fr)后,程序崩溃了。

基本上,我尝试使用“fgets”将输入的每个字符放入具有适当索引的字符串中。获得该字符串后,我会检查每个索引中是否有字母,如果是,则打印分配给字母表中该字母的数字。

非常感谢任何帮助或深入了解为什么这不能按预期工作,谢谢!

最佳答案

您遇到一些问题。

首先,char input_str[10]只够用户输入 9 个字符,而不是 10 个字符,因为您需要为字符串结尾的空字节留出一个字符。

其次,你的循环走得太远了。对于包含 10 个字符的字符串,索引最多为 9,而不是 10。当到达空字节时,它也应该停止,因为用户可能没有输入全部 9 个字符。

要获取字母表中的位置,只需减去A的值即可。或a从角色的值(value)来看。使用tolower()toupper()将字符转换为您要使用的大小写。您的方法有效,但过于复杂和困惑。

letter_index_in_alphabet()声明返回int 。但是当字符是字母时,它不会执行 return陈述。我不确定为什么它应该返回一些东西,因为你从不使用返回值,但我已经将其更改为返回位置(也许调用者应该是打印消息的人,所以该函数只是进行计算)。

for循环,应该是i = 0执行作业,而不是i == 0这就是比较。

您也不应该过多使用全局变量。并且系统头文件应该有 <>在他们周围,而不是 "" .

#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <ctype.h>

int letter_index_in_alphabet(int ch) {

if (isalpha(ch)) {
int num = tolower(ch) - 'a' + 1;
printf("%d is a letter, with %d as its location in the alphabet!\n", ch, num);
return num;
} else {
return -1;
}
}

int main()
{
char input_str[10];
printf("Please enter a series of up to 9 letters and numbers: \n");

fgets(input_str, sizeof(input_str), stdin);

for (int i = 0; input_str[i]; i++) {
letter_index_in_alphabet(input_str[i]);
}

return 0;
}

关于将用户输入转换为字符数组,并过滤​​其他字符中的字母?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44209941/

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