【发布时间】:2022-01-02 21:21:26
【问题描述】:
#include <stdio.h>
#include <string.h>
#define CHAR_SIZE 35
//Function to remove white space
char *remove_white_spaces(char *str)
{
int i = 0, j = 0;
while (str[i])
{
if (str[i] != ' ')
str[j++] = str[i];
i++;
}
str[j] = '\0';
return str;
}
void main()
{
int i = 0;
char str[CHAR_SIZE];
printf("\nKey in input: ");
fgetchar();
fgets(str , CHAR_SIZE, stdin);
//Remove white space
remove_white_spaces(str);
printf("%s",str);
//for (i = 0; str[i] != '\0'; ++i);
//printf("Length of the string: %d", i);
if (str[i] == '0' || str[i] == '1' )
{
printf("CORRECT");
}
else
{
printf("Wrong Input");
}
}
我想检查用户是否输入了正确的输入。例如,我输入了 0 01111110 10100000000000000000000。删除空格后,str 输入变为 001111110101000000000000000000000。从这个 str 中,我想检查用户是否只输入了 0 和 1。我得到的结果的输出是正确,如下所示1。 Output of result
但是,当用户键入另一个值(包括 0 和 1)时。我想得到的输出是错误的输入。但是我得到了正确的结果,如下所示2。
附加问题,我如何实现一个 if 语句,即 str 必须只有 32 个字符才能继续,否则它必须中断并且用户键只能键入 32 个字符。我可以在 while 循环而不是 if 语句中执行此操作,以便用户无需再次运行代码吗?
【问题讨论】:
-
values包含什么?什么是“正确输入”? -
i初始化为什么? -
Edit 并显示 minimal reproducible example 以及输入和预期与实际输出。