2017-12-26 26 views
-2

私は2つの文字列を持っています。C - 2文字列のインデックスを比較する方法は?

string1[20] = "ab cd efgf"; string2[20] = "mn go jpfgt";

場所(インデックス)と、文字列の各文字には 手紙ではない数字またはスペース

だけを見つける必要がある文字列2 にし、印刷後に表示される文字列1の最初の文字を見つける必要があります例えば

:文字列内の場所9内の文字列1位8で文字F、2

+4

いかなる試みもありますか? find()内の – dasblinkenlight

答えて

0

我々初心者がお互いを助けるべきである:) ここでは私の3セントです:)

012。

Cのスターターインデックスは0から始まります。

だから、ここでは、文字列内の場所8の文字列1位7における

文字F、2

が実証プログラムであると言うことは正しくなります。

#include <stdio.h> 
#include <string.h> 
#include <ctype.h> 

int find_letter(const char *s1, const char *s2, size_t *i1, size_t *i2) 
{ 
    int success = *s1 && *s2; 

    if (success) 
    { 
     const char *p1 = s1; 
     const char *p2; 

     do 
     { 
      success = isalpha((unsigned char)*p1) && 
         (p2 = strchr(s2, *p1)) != NULL; 
     } while (!success && *++p1); 

     if (success) 
     { 
      *i1 = p1 - s1; 
      *i2 = p2 - s2; 
     } 
    } 

    return success; 
} 

int main(void) 
{ 
    char string1[] = "ab cd efgf"; 
    char string2[] = "mn go jpfgt"; 
    size_t i1; 
    size_t i2; 

    if (find_letter(string1, string2, &i1, &i2)) 
    { 
     printf("%c at position %zu in the first string " 
       "and at position %zu in the second string\n", 
       string1[i1], i1, i2); 
    } 

    return 0; 
} 

プログラムの出力は、独立して、これを解決するに

f at position 7 in the first string and at position 8 in the second string 
+0

、s1またはs2がNULLの場合はどうなりますか?これとは別に、努力をお祝いします。 – linuxfan

+0

@linuxfan未定義の動作です。標準のC文字列関数と同様に、関数のクライアントが有効なポインタを渡す作業です。 –