1

私の問題は、c の文字列内の一重引用符または二重引用符の数を数えられるようにすることです。例

        String            Single Quote Count        Double Quote Count
     'hello world'                2                      0
     'hell'o world'               3                      0

     "hello world"                0                      2
     "hello" world"               0                      3

ユーザーが文字列を入力し、gets() 関数を使用すると、文字列をさらに分析するためにこのカウンターが必要になります。

たとえば、文字列で「|」をカウントする必要がある場合は簡単でした。

        String            | Count        
     hello | world           1            
     hello | wo|rld          2            

私の機能は次のように単純でした:

 int getNumPipe(char* cmd){
  int  num = 0;
  int i;
     for(i=0;i<strlen(cmd);i++){
       if(cmd[i]=='|'){ //if(condition)
       num++;
      }
     }

 return num;
}

しかし、引用符を分析する必要があるので、if(条件) に何を入れればよいかわかりません

          if(cmd[i]==''')??
4

5 に答える 5

3

simple-escape-sequence:
これらの 11 文字のいずれかをコード内の定数として表現する必要がある場合はいつでも、次を使用します。

'\\' (backslash)
'\'' (quote)
'\"' (double quote)
'\?' (question mark)
'\a' (alarm)
'\b' (backspace)
'\f' (form feed)
'\n' (new line)
'\r' (carriage return)
'\t' (horizontal tab)
'\v' (vertical tab)

コードを再利用する良い機会です:

int getNumPipe(const char* cmd, char match) {
  int  num = 0;
  while (*cmd != '\0') {
    if (*cmd == match) num++;
    cmd++;
    }
  return num;
}

...
char s[100];
fgets(s, sizeof s, stdin);
printf(" \" occurs %d times.\n", getNumPipe(s, '\"'));
printf(" \' occurs %d times.\n", getNumPipe(s, '\''));
于 2014-04-19T13:05:53.113 に答える
1

\'一重引用符 (Like ) または二重引用符 ( Like )の前にバックスラッシュをエスケープ文字として使用する必要があります。その\"ため、次のステートメントを使用してチェックしてカウントする必要があります。

    if (cmd[i] == '\'')  numOfSingleQuote++;
    else if (cmd[i] == '\"')  numOfDoubleQuote++; 

詳細については、リンクをチェックしてください: C のエスケープ シーケンス

于 2014-04-19T12:44:15.737 に答える