2011-04-16 6 views
0

2つの文字列を取り、それぞれの文字列の2番目の文字を他の文字列と比較したいと思います。 は、どのように私はこの文を修正すればよい:関数は2つの文字列を取り、n番目の文字を比較したい

if (strncmp(str1 + 1, str2 + 1) != 0) { 
... 

私は引数を渡すと、キャストなしで整数からポインタを作るというエラーを取得します。

+1

これは 'strncmp'、btwの使い方ではありません。第3引数 'size_t n'があります。これはあなたが比較するべき長さを指定します。この場合、単に '=='を使って文字自体を比較することができます。 –

+0

3番目の引数に「1」を入れるのを忘れてしまいました。 – hut123

答えて

3
if (str1[1] == str2[1]) { 
    /* Do something */ 
} 
+0

これはこれを行う最も簡単な方法です – BiGYaN

0

あなたが文字列のいずれかを比較したい位置よりも小さくすることができるという可能性を許可する場合:n番目の文字が等しいとき、何かをする、そして、

/* Return 1 if s1[n] > s2[n], 0 if s1[n] == s2[n], -1 if s1[n] < s2[n]. 
    Return -2 if any of the strings is smaller than n bytes long. */ 
int compare_nth(const char *s1, const char *s2, size_t n) 
{ 
    size_t i; 

    for (i=0; i < n; ++i) 
     if (s1[i] == 0 || s2[i] == 0) 
      return -2; 

    if (s1[n] < s2[n]) 
     return -1; 
    else if (s1[n] > s2[n]) 
     return 1; 
    else 
     return 0; 
} 

を、あなたが行うことができます:あなたは、少なくともn文字が文字列のそれぞれであることを確実にわかっている場合、あなただけの他人を行うことができます

if (compare_nth(s1, s2, n) == 0) { 
    /* do whatever you want to do here */ 
} 

前記:

if (s1[n] == s2[n]) { 
    /* do whatever you want to do here */ 
} 

(注:Cで索引付けが0であるので、nはここで同じ意味で使用されています。したがって、2番目の文字をテストするには、n1になります。

関連する問題