"char array_of_strings [100] [100];"을 채우는 루프가 있습니다. 어떤 시점에서 나는 지금까지 추가 된 모든 문자열에서 그것을 지우고 위치 0부터 추가하기를 원합니다. C에서 어떻게 지울 수 있습니까?어떻게 C 언어로 문자열 배열을 재설정 할 수 있습니까?
감사합니다.
"char array_of_strings [100] [100];"을 채우는 루프가 있습니다. 어떤 시점에서 나는 지금까지 추가 된 모든 문자열에서 그것을 지우고 위치 0부터 추가하기를 원합니다. C에서 어떻게 지울 수 있습니까?어떻게 C 언어로 문자열 배열을 재설정 할 수 있습니까?
감사합니다.
당신은 문자열과 배열을 사용하여 사실에 있다고 가정하면,이 같은 작업을해야합니다 : 물론
int i;
for (i=0; i<100; i++)
array_of_strings[i][0] = 0;
, 문자열, 당신은 볼 필요 하듯이 당신은 당신의 데이터를 처리하지 않습니다 memset과 같은 것.
해당 데이터 구조에는 실제로 고유 한 구조가 없습니다. 기본적으로 아무것도없는 것처럼 가장하여 재설정했습니다.
채워진 문자열을 알려주는 카운터가 있습니다. 맞습니까? 0으로 설정하십시오. 끝난.
"거기에 아무것도 척을 다시 설정합니다." ? 나는 그것을 얻었다. – goe
'array_of_strings'은 10000 개의 연속 바이트입니다. 해당 데이터는 조직이 있기 때문에 코드가 조직화되어 있음을 알 수 있습니다. 'strings_populated'라는 변수 나 잠재적 위치의 N 개의 문자열을 넣었음을 알려주는 변수가 있습니다. 그것이 구조를 부여하는 것이기 때문에, 그것을 닦아서 구조를 쓸어 낼 수 있습니다. – chaos
잘 string_populated를 0으로 설정하면 배열에 이미있는 항목을 덮어 쓰기 시작합니다. 이전에 추가 한 모든 문자열을 덮어 쓰지 않으면 어떻게 될까요? 그런 다음 10 개의 새로운 문자열과 2 개의 이전 루프를 말합니다. – goe
memset function을 사용하여 모든 문자를 0으로 되돌릴 수 있습니다.
P. 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 정확히으로 무슨 소리
* 문자열로 데이터를 처리하고 있어도 memset이 더 우아해 보입니다. –
위의 @Nathan Fellman에 동의합니다. 배열을 0으로 memset (..) 할 때 달성하고자하는 것에 대해 덜 모호합니다. –