2013-02-19 4 views
0

2 차원 배열에 입력 된 문자열의 일부를 원합니다. 예 : 문자열 : "하루" 배열의 결과 : Col1 : one Col2 : 하루문자열의 일부로 2 차원 배열 채우기

질문은 배열 1에 대해 result2과 열 2에 대해 result의 두 변수로 어떻게 채울 수 있습니까?

이 내 코드는 (당신이 내가 역사에 대해 별도의 배열과 사용자 입력의 부분 유지하기위한 별도의 배열이 볼 수)까지이다 : 당신이 필요로하는 것처럼,

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

int main (int argc, char *argv[]) 
{ 
    int i=0; int j=0; int k=0; 
    char inputString[100]; 
    char *result=NULL; 
    char *result2=NULL; 
    char delims[] = " "; 
    char historyArray[100][100] = {0}; 
    char historyKey[] = "history"; 
    char *tokenArray[100][100] = {0} ; 
    //char exitString[] = "exit"; 

    do 
    { 

      printf("hshell>"); 
      gets(inputString); 
      strcpy (historyArray[k], inputString); 
      k++; 


      // Break the string into parts 
      result = strtok(inputString, delims); 

      while (result!=NULL) 
      { 
        result2 = result; 
        puts(result); 
        result= strtok(NULL, delims); 
        for (int count = 0; count < k; count++) 
        tokenArray[count] = result2; 
        j++; 
      } 



       if (strcmp(inputString,historyKey) == 0) 
       { 
        for (i=0; i<k; i++) 
        { 
         printf("%d. %s \n",i+1,historyArray[i]); 
        } 
       } 
       else if (strcmp ("exit",inputString) != 0) 
       { 
        printf("\nCommand not found \n"); 
       } 

    }while (strcmp ("exit", inputString) != 0); 
    return 0; 
} 
+1

질문이 표시되지 않습니까? –

+0

가 추가되었습니다. 미안합니다. – serge

답변

1

먼저 들린다 입력에 대한 단일 차원 배열 : 더 내린다

char tokenArray[100]; 

는 루프 이렇게 것이다 :

result = strtok(inputString, delims); 

j = 0; 
while (result!=NULL) 
{ 
    strcpy(tokenArray[j++], result); 
    puts(result); 
    result= strtok(NULL, delims); 
} 

그 힌트를 가지고 시험해보고 나머지 부분을보십시오.

+0

두 변수를 사용하는 것보다 간단하면서도 효율적입니다. 그것은 작동합니다. – serge

+0

프로그램을 디버깅 할 때 "history"를 입력하면 tokenArray가 한 주소에 "history"값을 갖고 다음 주소에 "tory"값이 있습니다. 나는 이것이 'NULL'인 경우 tokenArray [1]을 검사하지 못하게한다고 생각합니다. 어떻게 된 일인가? – serge