문자열 길이가 이상한 버그가 있습니다. 나는 이것에 아주 새롭다 그래서 아마 나가 잃어버린 기본적인 무언가이다.C의 문자열을 반대로 출력 함
문자 배열 (IE의 첫 번째 문자)에 대한 포인터를 가져 오는 프로그램을 작성하려고합니다. 첫 번째 문자와 동일한 크기의 문자열에 대한 포인터를 반환하지만 문자는 반대로. 예를 들어 컴퓨터는 retupmoC가됩니다. tacocat이 tacocat :
여기에 코드입니다 남아있을 것입니다 :
char* return_flipped_string(char* stringptr)
{
int i=0,size_of_string=length_of_string(stringptr);
char *flipped;
flipped=(char *)malloc(size_of_string*sizeof(char));
while(i<size_of_string)
{
*(flipped+i)=*(stringptr+size_of_string-1-i);
i++;
}
return flipped;
}
stringptr는 원래 문자열에 대한 포인터, 뒤집힌 내가 복귀하고있는 것입니다. 뒤집힌 문자열을 인쇄 할 때, 뒤집힌 문자열을 뒤집은 다음, 횡설수설 할 수없는 횡설수설을 보여줍니다. 그들은 어떤 이유로 든 같은 크기가 아닙니다. 여기
이 (제대로 작동) 나는 문자열의 길이를 찾기 위해 쓴 코드입니다 당신이 .... 문자열을 종료 NULL 필요int length_of_string(char* stringptr)
{
int length=0,i=0;
while(*(stringptr+i)!='\0')
{
length++;
i++;
}
return length;
}
팁 : length 함수의'i'와'length'는 동일하므로'i' 만 사용하십시오. –
표준 strlen() 함수를 사용하는 대신 length_of_string을 작성한 특별한 이유가 있습니까? –
@MarcB : 맞습니다. 나는 눈치 채지 못했습니다. 기여 해줘서 고마워. –