2017-12-26 15 views
-2

ich habe 2 string;C - Wie Index auf 2 String zu vergleichen?

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

Need die ersten Buchstaben in string1 zu finden, die in jedem der Saiten Notwendigkeit der Stelle (Index) und der Brief in String 2 und nach dem Druck erscheint nur Buchstaben keine Zahlen oder Raum zu finden

zum Beispiel:. der Buchstabe f, anstelle 8 in String 1, Platz 9 in String 2

+4

Jeder Versuch, diese selbstständig zu lösen? – dasblinkenlight

Antwort

0

Wir Anfänger sollten einander helfen :) Hier ist meine drei Cent :)

012.

Für Starter beginnen Indizes in C von Null.

So wäre es richtig zu sagen, dass

die Buchstaben f, anstelle 7 in String 1, Platz 8 in String 2

hier ein Demonstrationsprogramm ist.

#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; 
} 

Die Programmausgabe ist

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

in find(), was passiert, wenn s1 oder s2 NULL sind? Abgesehen davon, herzlichen Glückwunsch für die Mühe. – linuxfan

+0

@linuxfan Undefiniertes Verhalten. Wie bei Standard-C-String-Funktionen ist es die Aufgabe des Clients der Funktion, gültige Zeiger zu übergeben. –