簡體   English   中英

如何檢查字符串是否包含 C 中的某個值

[英]How to check a string contain a certain value in C

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;
        }

我想檢查用戶是否輸入了正確的輸入。 例如,我有 key in 0 01111110 101000000000000000000000。去掉空格后,str輸入變成了001111110101000000000000000000000。從這個str中,我想檢查用戶是否只有key in 0和1。但是,str值沒有Z394D1F91FBA276BZ394D1F91FBA76B在 if 條件下,但在 else 條件下。 代碼有什么問題?

Output:鍵入值:0 01111110 10100000000000000000000 00111111010100000000000000000000

首先,您正在檢查str[i]是否應該等於 01——這沒有任何意義,因為數組中的元素只能是一個值,01; 所以,你應該測試if (str[i] == '0' || str[i] == '1') 而且,在此之前,您應該初始化 i: int i = 0

初始化 i:把 C 的等價物

int i = 0; 

在進入 while 循環之前,在你的 prog lang 中應該可以完成這項工作。

您可以使用 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;
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM