可以使用一个变量来记录是否出现过星号,如果已经出现过,则再次出现星号就不符合要求。

例如:

#include <stdio.h>
#include <stdbool.h>

bool is_valid(char *str) {
    bool has_star = false;
    for (int i = 0; str[i] != '\0'; i++) {
        if (str[i] == '*') {
            if (has_star) {
                return false;
            } else {
                has_star = true;
            }
        }
    }
    return true;
}

int main() {
    char str1[] = "hello*world"; // valid
    char str2[] = "hello**world"; // invalid
    char str3[] = "hello world"; // valid
    char str4[] = "hello*"; // valid
    char str5[] = "hello*world*"; // invalid
    
    printf("%s\n", is_valid(str1) ? "valid" : "invalid"); // output: valid
    printf("%s\n", is_valid(str2) ? "valid" : "invalid"); // output: invalid
    printf("%s\n", is_valid(str3) ? "valid" : "invalid"); // output: valid
    printf("%s\n", is_valid(str4) ? "valid" : "invalid"); // output: valid
    printf("%s\n", is_valid(str5) ? "valid" : "invalid"); // output: invalid
    
    return 0;
}
C语言判断字符串中只允许出现一次

原文地址: https://www.cveoy.top/t/topic/bjTV 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录