我想在 c 中進行驗證,用戶必須輸入一個必須為 2 個單詞的字串。最初,我想使用strstr(input, " "), 來檢查輸入中的空格,但我認為用戶可以將空格放在字串的開頭和結尾,他們也可以放置多個空格,從而導致超過 2 個單詞. 有沒有人有一個簡單的解決方案?提前致謝!
#include <stdio.h>
#include <string.h>
int main() {
int input;
do {
printf("Enter 2 words: ");
scanf(%[^\n], input);
getchar();
} while (!strstr(input, " "));
return 0;
}
uj5u.com熱心網友回復:
您可以使用 strtok 并使用空格作為分隔符。
uj5u.com熱心網友回復:
以下函式回傳給定分隔符的(以 NULL 結尾的)字串中的單詞數:
int word_count(char *str, char delimiter)
{
int i = 0;
if (!str || !*str)
return (0);
if (*str != delimiter && *(str))
i = 1;
while (*(str 1))
{
if (*str == delimiter
&& *(str 1) != delimiter
&& *(str 1))
{
i ;
}
str ;
}
return (i);
}
其背后的邏輯是,每次char序列從定界符變為非\0字符時,它都會計算單詞數,如果字串不是 NULL 并且第一個char不是定界符,則從 1 開始單詞數。
替換并將您掃描的字串傳遞給它delimiter。' '
uj5u.com熱心網友回復:
我想我設法找到了解決方案。
輸入必須只有一個空格。
空格不能在輸入的開頭或結尾。
#include <stdio.h> #include <string.h> int main(){ char input[50]; int len, ctr; do{ printf("Enter 2 words: "); scanf(%[^\n], input); getchar(); len = strlen(input); ctr = 0; for(int i = 0; i < len; i ){ if(input[i] == ' ') ctr ; } }while(input[0] == ' ' || ctr != 1 || input[len-1] == ' '); return 0; }
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/488055.html
上一篇:C從檔案中決議資料
