gpt4 book ai didi

用于读取字符的 C 程序无法识别正确输入的字符串。

转载 作者:行者123 更新时间:2023-11-30 14:44:13 24 4
gpt4 key购买 nike

希望你能帮我把。我目前正在努力完成大学要求我们做的一项练习。我必须用 C 语言编写一个程序,扫描字符串并通过名为 read_name() 的函数读取它。程序应该输出输入的字符串是否正确。字符串的条件是:

  • 第一个字符应该是大写字母。
  • 输入字符串中的所有其他字符都必须是字母
  • 字符串的最小长度必须至少为 2 个元素
  • 字符串的最大长度必须为 20 个元素

我已经写好了程序,它执行得很好,但是每次我输入一个字符串,无论它是否只包含字母、数字或逗号等符号,它总是输出输入的字符串不正确。但我认为我已经以某种方式编写了程序,以便识别每个可能的错误输入,但每个正确的输入都应显示为正确。

我认为我的错误出在函数“int read_name(char input[])”的for循环中。我无法更改此函数的声明,因为它是由我的大学预定义的。其他一切都可以改变。 :)

我希望我已经足够清楚地解释了我的问题。预先非常感谢。

程序代码如下:

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

#define MAX_STRING 20
#define MIN_STRING 2
#define UPPERCASE_MIN_ASCII 65
#define UPPERCASE_MAX_ASCII 90
#define LOWERCASE_MAX_ASCII 122
#define LOWERCASE_MIN_ASCII 97

int read_name(char input[]);

int main(void)
{
char pre_input[MAX_STRING];
char status;

printf("Please put in a string: ");
gets(pre_input);

status = read_name(pre_input);

if(status == 0) {
printf("Input was incorrect!");
} else {
printf("Input was correct");
}
return 0;
}

int read_name(char input[])
{
int i, n;

n = strlen(input);

if (n < MIN_STRING)
return 0;

if (input[0] < UPPERCASE_MIN_ASCII || input[0] > UPPERCASE_MAX_ASCII)
return 0;

for (i = 1; i <= n; i++) {

if (input[i] < UPPERCASE_MIN_ASCII || input[i] > LOWERCASE_MAX_ASCII) {
return 0;
} else if (input[i] > UPPERCASE_MAX_ASCII && input[i] < LOWERCASE_MIN_ASCII) {
return 0;
}
}
return 1;
}

亚历克斯

最佳答案

for (i = 1; i <= n; i++) 

应该是 i < n,因为第 n 个元素是以\0 结尾。

关于用于读取字符的 C 程序无法识别正确输入的字符串。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53599130/

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