2017-12-26 4 views

답변

0

우리 초보자가 서로 도움이 문자열의 장소 9 문자열 1 위 8 F 문자, :) 여기 내 세 센트 :

012.

C의 시작 색인은 0부터 시작합니다.

그래서

여기

문자열 2 위 8 문자열 1 위 7의 편지 f는,하는 시범 프로그램입니다 말을 제대로 할 것이다.

#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 문자열 함수와 마찬가지로 유효한 포인터를 전달하는 것은 함수 클라이언트의 작업입니다. –

관련 문제