gpt4 book ai didi

c - 读入短语并过滤掉字符以查找数字 C

转载 作者:行者123 更新时间:2023-11-30 17:04:05 30 4
gpt4 key购买 nike

我正在尝试编写一个程序,该程序读取测试短语,忽略字符,并将数字存储在数组中。这是我的代码:

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

#define max_length 60
void main ()
{
int c;
int input_chars[max_length];
int length;
int reverse = 0;
int temp;
printf ("Input the test phrase: ");
length = 0;
/* limit the length of the phrase to the first 60 chars */
/* do not store any non-digit input */
while ((c = getchar ()) != '\n' && length < max_length) {
if (isdigit (c)) {
input_chars[length] = c - 48;
length++;
}
}
for (length = 0; length < 60; length++) {
printf ("The array is %d", input_chars[length]);
}
getch ();
}

它返回的值与数组并不接近。我做错了什么?

最佳答案

您通过使用具有自动存储持续时间(不确定)的未初始化变量 input_chars 的值来调用未定义的行为

在这种情况下,您应该只打印您读到的内容。

其他说明:

  • 您应该使用缩进正确格式化代码。
  • 您应该使用'0'而不是魔数(Magic Number)48。 (根据 N1256 5.2.1 字符集,数字的字符代码是连续的)
  • 您应该使用标准 int main(void) 而不是实现定义的 void main(),除非您需要使用后者。
  • 为了安全起见,您应该检查 c 是否不是 EOF

更正的代码:

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

#define max_length 60
int main (void)
{
int c;
int input_chars[max_length];
int length;
int reverse=0;
int temp;
printf ("Input the test phrase: ");
length = 0;
/* limit the length of the phrase to the first 60 chars */
/* do not store any non-digit input */
while ((c = getchar()) != '\n' && c != EOF && length < max_length) {
if (isdigit(c))
{
input_chars[length] = c - '0'; length++;
}
}
for(temp=0;temp<length;temp++){
printf("The array is %d", input_chars[temp]);
}
return 0;
}

关于c - 读入短语并过滤掉字符以查找数字 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35932498/

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