2014-12-18 7 views
0

배열의 특정 요소를 (행운과 함께) 검색하는 방법을 아는 사람이 있습니까? 나는 올바른 방법을 제외하고 모든 것에 관해 시도했다.배열의 특정 요소 검색/인쇄

char array1[10][10]={"Alpha","Bravo","Charlie","Delta","Alpha2"}; //room for some more here 
char array2[10][10]={"123456","234567","345678","456789","567890"}; //room for some more here 

내가 일반에 대한 루프에 의해 그들 모두를 인쇄 할 수 있습니다 :

for (i=0;i<10;i++){ 
    printf("%s %s \n", &array1[i], &array2[i]); 
} 

그러나의 내가 같은 루프를 수행한다고 가정하자

내이 해당 숯불 배열

이 같이 보입니다 'A'(첫 번째와 마지막 것)로 시작하는 두 요소 만 인쇄합니다. 내가하는 array1의 각 요소에서 첫 번째 문자에 맞게 내 'X'한 말 &하는 array1 뒤에 추가 [X]를 넣어 제외하고는 이런 일이 (

에 대한 루프 동일합니다
do { 
    for (i=0;i<10;i++){ 
     printf("Name: %s\nDate: %s\n\n", &array1[i][x], &array2[i]); 
     } 
    } while (x=='A'); 

작동 것이라고 생각 .

을 내가 원하는 요소의 첫 번째 문자입니다하지만 좋은 ..

사람이이 그것은하지 않습니다 - 그것은 단지 잠시 루프 (X == 'A'를)을 할 것 같은 더 나은 해결책? 나는 for 루프의 다른 변종을 행운없이 시도했다. 지금 막 붙어있다 ...

+0

힌트 : '& array1 [i] [x]'는 _array_의 주소가 아닙니다. –

+0

Q :'while (x == 'A');를 사용하여 달성하고자하는 것은 무엇입니까? 그것은 틀린 것처럼 보인다. –

+0

정리해 주셔서 고마워요. 주소, 포인터 및 물건에 관해서는 조금 섞여 있습니다. (x == 'A')에 관해서는 제 생각에 & array1의 두 번째 부분에서 'A' [i] [x] – Espen

답변

1
#include <stdio.h> 

int main(void) { 
    char array1[10][10]={"Alpha","Bravo","Charlie","Delta","Alpha2"}; //room for some more here 
char array2[10][10]={"123456","234567","345678","456789","567890"}; //room for some more here 
int i; 
for (i=0;i<10;i++){ 
    if(array1[i][0]=='A') //add this statement in your code 
    printf("%s %s \n", &array1[i], &array2[i]); 
} 
    return 0; 
} 
+0

감사합니다 Shan. 이것은 매력처럼 작동했습니다. 그래서 내 x는 필요 없지만 대신 [0]을 참조하십시오. 당신은 내 하루를 만들었 어 :) – Espen

+0

@Epen 안녕하세요, 승 인자 : – Ankur

1

당신이 x=='A'을 확인하는 동안 사용하는 것은 A의 ASCII 값과 비교할 것입니다. 조건이 잘못되었습니다. while((strncmp(array,"A",1)) == 0) 문자열의 첫 번째 문자를 검사합니다. 내 'x'를 말할 &하는 array1 뒤에 추가 [X]를 넣어 제외

0

꽤 배열 첨자가 작동하는 방법은 그 배열 1

의 각 요소의 첫 번째 문자와 일치해야합니다. 찾은 것처럼 array1[i]array1i 번째 문자열을 나타냅니다. 그런 다음 array1[i]x 번째 문자에 문자열 (예 : array1[i][x])에 색인을 붙여 액세스 할 수 있습니다.

실제로는 x을 지정하지 않으므로 정의되지 않은 동작이 발생합니다. 당신이하고 싶은 array1[i] (즉, 요소 ​​영)의 첫 번째 문자를 추출, 그래서 다음이 가능합니다 :

char x = '\0'; 

do { 

    for (i=0;i<10;i++){ 
     x = array1[i][0]; 
     printf("Name: %s\nDate: %s\n\n", &array1[i][x], &array2[i]); 
     } 
    } while (x=='A'); 

당신은 다음이 아마 당신이 원하는 동작을주지 않는 것을 알 수 있습니다. 그것은 모든 10 문자열, 다음에x == 'A' 검사를 수행 반복됩니다. 대신 루프 내부로 이동해야합니다.

char x = '\0'; 
for(i = 0; i < 10; i++) 
{ 
    x = array1[i][0]; 
    if(x == 'A') 
     printf("%s %s \n", &array1[i], &array2[i]); 
} 
+0

이 입력에 감사드립니다.언급 한 것처럼 첫 번째 예는 원치 않는 행동을합니다. 두 번째 부분은 거의 작동했습니다. 올바른 값을 주었지만 첫 번째 배열에는 (NULL) 값이 있습니다. 이것은 다른 주석에서 언급 한 잘못된 주소 지정 (& array [i] 및 array [i] 사용)으로 인해 발생할 수 있습니다. 그러나 어쨌든 덕분에 올바른 방향으로 나를 인도합니다. – Espen