2009-10-03 7 views

답변

2

당신은 문자열과 배열을 사용하여 사실에 있다고 가정하면,이 같은 작업을해야합니다 : 물론

int i; 
for (i=0; i<100; i++) 
    array_of_strings[i][0] = 0; 

, 문자열, 당신은 볼 필요 하듯이 당신은 당신의 데이터를 처리하지 않습니다 memset과 같은 것.

+1

* 문자열로 데이터를 처리하고 있어도 memset이 더 우아해 보입니다. –

+0

위의 @Nathan Fellman에 동의합니다. 배열을 0으로 memset (..) 할 때 달성하고자하는 것에 대해 덜 모호합니다. –

3

해당 데이터 구조에는 실제로 고유 한 구조가 없습니다. 기본적으로 아무것도없는 것처럼 가장하여 재설정했습니다.

채워진 문자열을 알려주는 카운터가 있습니다. 맞습니까? 0으로 설정하십시오. 끝난.

+0

"거기에 아무것도 척을 다시 설정합니다." ? 나는 그것을 얻었다. – goe

+0

'array_of_strings'은 10000 개의 연속 바이트입니다. 해당 데이터는 조직이 있기 때문에 코드가 조직화되어 있음을 알 수 있습니다. 'strings_populated'라는 변수 나 잠재적 위치의 N 개의 문자열을 넣었음을 알려주는 변수가 있습니다. 그것이 구조를 부여하는 것이기 때문에, 그것을 닦아서 구조를 쓸어 낼 수 있습니다. – chaos

+0

잘 string_populated를 0으로 설정하면 배열에 이미있는 항목을 덮어 쓰기 시작합니다. 이전에 추가 한 모든 문자열을 덮어 쓰지 않으면 어떻게 될까요? 그런 다음 10 개의 새로운 문자열과 2 개의 이전 루프를 말합니다. – goe

7

memset function을 사용하여 모든 문자를 0으로 되돌릴 수 있습니다.

P. 2 차원 배열을 사용하면 문자열을 다루는 데 상당히 비 재래 적입니다. 개별 문자열의 동적 할당으로 이동해보십시오.

2
memset(array_of_strings, 0, sizeof(array_of_strings)); 

이 거기에 크기를위한 매직 넘버를 넣어 청소기보다, 누군가가 당신의 문자열 배열의 크기를 변경할 때 길을 깰 가능성이 적습니다. sizeof를 사용하여 컴파일 할 때 배열의 크기를 알 수 있으므로 작동합니다.

memset과 많이 비슷하지만 영점 조정을 위해서만 bzero를 사용할 수도 있습니다. 일부 플랫폼에서는 bzero가 memset보다 빠를 수 있지만 정직하게도 두 함수가 너무 빠르기 때문에 여기에서 머리카락을 나누는 것은 어리 석다.

bzero(array_of_strings, sizeof(array_of_strings)); 

bzero는 memset 함수가 필요 사용법 #include #INCLUDE 당신을 필요로

The memset man page is here 정확히으로 무슨 소리

The bzero man page is here

관련 문제