2016-10-22 1 views
0

내가 입력에게 내가 메인에 다시 집합 크기의 배열을 반환C의 메인 배열에 char 배열을 어떻게 다시 전달합니까?

char transl [] (char **x, short num){ 
    char newword [] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 
    short num = num; 
    FILE * wd; 
    wd = fopen(argv[1], "r"); 
    short w=0; 
    short arrayle=sizeof(x); 
    if (arrayle>9){ 
    while((c = getchar() != '\n') && c != EOF); 
    } 
    while(((c = fgetc(wd)) != EOF)&& (num>=1)) { 
    if (c == ' ') { 
    num--; 
    } 
    if (num == 1) { 
    newword [w] = ((c = fgetc(wd))); 
    w++;  
    } 
    } 
    fclose(wd); 
    return newword; 
    } 

아래에 복사 된 문자의 배열과 짧은을 가지고, 내가 만든 함수에서 배열을 전달하기 위해 노력하고있어 다음과 같은 방법으로.

 char newDay [32]; 
    newDay = transl (engw, daynum); 

나는 다음과 같은 오류가 발생합니다 :

assignment to expression with array type 

내가 다시 배열에 대한 포인터를 전달해야하지만 포인터가 배열 자체를하지 않고 주에서 무효 wouldnt가 그 스택에 읽기 되 돌리는거야?

어쨌든 매우 혼란 스럽습니다. 조언을 해주시고, 사전에 많은 것을 감사드립니다! 당신이해야 할 함수에서 배열을 다시 전달하기 위해

+1

원하는 것을 분명히하지 못합니다. [ask]를보고 [mcve]를 제공하십시오. 그리고 형식을 적절하게 들여 쓰기하십시오. 스 니펫을 읽을 수 없습니다. – Olaf

+1

'char transl [] (char ** x, short num) {'해야 할 일은 무엇입니까 ?? –

+0

아, 태그를 스팸하지 마세요! 이것은 C가 아닌 것 같습니다 (컴파일하는 동안 오류가 발생하지 않는 한). – Olaf

답변

1

두 가지 중 하나를

  • 정적 메모리의 배열을 할당 -이 방법은 오직 하나의 스레드 시스템에서 작동 만 재진입을 필요로하지 않는 상황에서
  • 동적 메모리에 배열 할당 - 재진입 또는 동시성에 대한 제한이 없지만 호출자는 메모리 누수를 피하기 위해 수신 한 메모리를 확보해야합니다 . 그는 반환 된 배열을 처리 완료 후

    free(resultOfCall); 
    

    를 호출하는 함수의

    char *newword = malloc(30); 
    memset(newword, 0, 30); 
    ... 
    return newword; 
    

    호출자가 필요합니다 여기

는 두 번째 방법의 예입니다.

관련 문제