2014-09-12 3 views
-1

이 루프는 문자를 ascii로 변환하는 cast 함수에 data []의 모든 단일 문자를 전달합니다.함수의 반환 값을 C로 배열에 저장하는 방법

내 문제는 배열 'buffer []'에 반환 된 값을 저장하려고하지만 첫 번째 반환 된 값만 저장하는 것입니다. 즉, buffer []에 함수에서 반환 된 모든 값이 있어야합니다.

for (int i =0 ; i < 8; i++) 
{ 
    if (data [i] != '\0') 
    { 
     buffer [i] =cast(data[i]); 
    } 
} 

long cast (char b) 
{ 
    long x = 0; 
    x = (long)b;  
    return x; 
} 
+1

당신은 변수를 캐스팅하는 기능이 필요하지 않습니다 (원래 주석으로 게시했습니다). –

+0

버퍼의 유형은 무엇입니까? 버퍼가 char 인 것처럼 보이고 정의되지 않은 동작 만 있습니다. –

+0

@IvanIvanov long type – AliDeV

답변

1

단지 형식 변환을 수행 할 필요가 없습니다.

+0

감사합니다. 캐스팅 기능을 제거하도록 도와 주셨습니다. 주석으로 답글로 게시 된 – AliDeV

0

데이터 배열과 버퍼 배열의 크기를 동일하게하여 문제를 해결했습니다. 예;

data [512]; 
buffer [512]; 

이렇게 데이터에서 변환 된 모든 요소는 버퍼 배열에 저장됩니다.

+0

은 코드 서식 지정을 원하지 않습니다. –

0

루프 조건에는 문자열을 처리 할 때 근본적인 결함이 있습니다.

for (int i =0 ; i < 8; i++) 
{ 
    if (data [i] != '\0') 
    { 
     buffer [i] =cast(data[i]); 
    } 
} 

제가 < 제 I 제안까지 데이터 [3] == '\ 0'루프가 계속되면;

for (int i =0 ; i < 8; i++) 
{ 
    if (data [i] == '\0') 
    { 
     break; 
    } 
    buffer [i] =cast(data[i]); 
} 

관련 문제