2017-04-25 7 views
0
void memSet(char destination[], char valueMemSet, int numOfValue) 
{ 

    char temp; 
    int j=1; 

    for (int i = 0; i <= numOfValue; i++) 
    { 

     temp = destination[i]; 
     destination[i] = valueMemSet; 
     destination[j] = temp; 
     j++; 


    } 

} 

배열은 원래 "연결된 연결 의미입니다."memset 함수를 만드는 데 문제가 있습니까?

이것은 내가 얻으려는 것입니다. "------ 이것은 소스 연결을 의미합니다."

이것은 현재 내가 얻고있는 것입니다. "------- 소스 연결은 링크를 의미합니다."

디버거를 실행하면 배열의 첫 번째 문자가 저장되지만 이후의 모든 문자는 대체됩니다.

이 문제를 어떻게 해결할 수 있습니까?

+0

실제'memset()'은 연결을 이해하지 못합니까? 왜 사람들을 혼란스럽게합니까? –

+0

연결을 시도하지 않습니다. 그것이 배열에서 말하는 것입니다. 나는 앞에 6을 추가하는 자체 memset 함수를 만들기 위해 노력하고있다. – CarlosGL

+1

당신의'<='는'<' –

답변

1

memset()은 총 배열 요소를 특정 값 (예 : - 제로)으로 초기화하려는 것처럼 주어진 메모리에 특정 값을 설정하는 함수입니다. 그래서 그 배열에 같은 설정됩니다.

여기서 필요한 것은 strcat() 기능입니다.

0

그게 필요한가요?

void memSet(char destination[], char valueMemSet, int numOfValue, int len) 
{ 
    int j=len-numOfValue; 

    for (int i = len-1;i>=numOfValue;i--) { 
     destinstion[i] = destination[j--]; 
    } 

    for (int i = 0; i < numOfValue; i++) 
    { 
     destination[i] = valueMemSet; 
    } 
}