void main
{
printf("\n Key in value: ");
fgetchar();
fgets(str , CHAR_SIZE, stdin);
//Remove white space
remove_white_spaces(str);
printf("%s",str);
while (str[i])
{
if(str[i] == '0' && str[i] == '1')
{
i ;
continue;
}
else
{
printf("Wrong number input")
break;
}
我想檢查用戶是否輸入了正確的輸入。例如,我在 0 01111110 101000000000000000000000 中有鍵。洗掉空格后,str 輸入變為 0011111101010000000000000000000000。從這個 str 中,我只想檢查 1 中的值,而不是 1在 if 條件中,而在 else 條件中。代碼有什么問題?
輸出:鍵入值:0 01111110 10100000000000000000000 00111111010100000000000000000000
uj5u.com熱心網友回復:
初始化 i: 把相當于 C 的
int i = 0;
在進入 while 回圈之前的 prog lang 中應該可以完成這項作業。
uj5u.com熱心網友回復:
首先,您正在檢查str[i]應該等于 0和等于 1 – 這沒有任何意義,因為陣列中的元素只能是一個值,0或1;所以,你應該測驗if (str[i] == '0' || str[i] == '1'). 并且,在此之前,您應該初始化 i: int i = 0。
uj5u.com熱心網友回復:
您可以使用 strtok 來提取您的字符。另外你的邏輯有問題。應該if (str[i] == '0' || str[i] == '1'檢查值是否為“0”或“1”。這是您可以參考的示例實作:-
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define CHAR_SIZE 100
int main()
{
char str[CHAR_SIZE];
printf("\n Key in value: ");
getchar();
fgets(str, CHAR_SIZE, stdin);
char *tok;
tok = strtok(str, "\n");
int i = 0;
tok ; //skip the first character which is a space
while (*tok != 0x00)
{
if (*tok <= 0x31 && *tok >= 0x30)
tok ;
else
{
printf("Wrong number input ==> %c \n", *tok);
break;
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/364877.html
