簡體   English   中英

檢查 C 中“fgets”的輸入

[英]Checks input of 'fgets' in C

我想檢查用戶是否寫了少於 30 個字符。 這是我下面的代碼,但它無法按照我想要的方式檢查用戶的輸入。 例如,如果我輸入 40 個字符作為輸入,它不會打印Not valid input 誰能解釋我如何檢查輸入是否正確?

int main(int argc, char **argv) {
    char string[31];
    printf("Enter a string: ");
    if (fgets(string, 30, stdin)) {
        printf("Enter a character too: ");
        char c;
        scanf("%c", &c);

        char *ptr = string;

        if (ptr = contains(ptr, c)) {
            printf("Found at position %ld\n", ptr - string + 1);
        } else {
            printf("Character did not found.\n");
        }
    } else {
        printf("Not valid input\n");
    }
    return 0;
}

fgets()讀取整行並將換行符保留在緩沖區中 如果緩沖區小於需要,緩沖區將不包含換行符,該換行符連同該行的 rest 將在隨后的fgets()調用中被讀取。

fgets(buffer, sizeof buffer, stdin);
size_t len = strlen(buffer);
if (!len) /* mal-formed input */;
if (buffer[len - 1] != '\n') /* error if not eof */;

你可以試試:

char string[32];
printf("Enter a string: ");
if(fgets(string,32,stdin)>30) {
   printf("Error: Too many characters");
   return 1;
}

暫無
暫無

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

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