我正在接受輸入,然后逐字決議字串,但我需要識別每個單詞的型別,因此需要能夠直接將輸入中字串的第一個單詞與我的一個預定義命令進行比較。
我的問題是輸入由一個命令和它的引陣列成,所以我必須逐字決議 STDIN,但是當我使用 strcmp 時它不起作用,除非我洗掉引數或在我的 strcmp 中包含一個空格。
我的代碼如下:
#include <string.h>
#include <stdio.h>
int main () {
char input[100];
printf("Enter your input: ");
fgets(input, 100, stdin);
printf("Reading input... \n");
const char s[2] = " ";
char *arg;
/* get the first token */
arg = strtok(input, s);
printf("First word: %s\n", arg);
if(strcmp(arg, "ATTACK")){
printf("Input Match\n");
}
return(0);
}
例如,如果我輸入“ATTACK 50 40”,盡管第一個單詞是 ATTACK,但它不會給我輸入匹配。
我嘗試檢查存盤在我的 arg 變數中的內容,以確保 strcmp 正在比較正確的內容,并且看起來是正確的,但我意識到它可能包含命令和引數之間的空格。
我嘗試在 strcmp 的“ATTACK”中添加一個空格,使其變為“ATTACK”并且它有效,但我想知道是否有一種方法可以讓我擁有一個垃圾收集變數,該變數將從變數中洗掉空格,或者我是否可以指定如果是空格,則洗掉最后一個字符。
uj5u.com熱心網友回復:
如果字串相等,strcmp 回傳 0
做
if(strcmp(arg, "ATTACK") == 0){
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/532226.html
