void reverse(char s[]) {
int i;
int len = 0;
for (i=0; s[i] != '0'; i++) {
len = len + 1;
}
위 코드는 위 코드입니다. s []는 내가 뒤집어 쓰려고하는 문자열입니다. 도와주세요! 감사합니다.C의 문자열에 몇 개의 문자가 있는지 계산하려합니다.
void reverse(char s[]) {
int i;
int len = 0;
for (i=0; s[i] != '0'; i++) {
len = len + 1;
}
위 코드는 위 코드입니다. s []는 내가 뒤집어 쓰려고하는 문자열입니다. 도와주세요! 감사합니다.C의 문자열에 몇 개의 문자가 있는지 계산하려합니다.
null 종료 문자를 테스트하려면 '\0'
을 사용하십시오. C
에서
for (i=0; s[i] != '\0'; i++) {
len = len + 1;
}
Strings
는 null
또는 \0
문자로 종료 문자 단지 배열입니다.
s[i] != '0'
을 색인 i
의 문자가 null인지 여부를 확인하는 것으로 변경하십시오.
string.h 헤더에 사용
strrev(string1,string2)
. 같은 머리글에서
strlen(string1)
을 사용하여 길이를 찾을 수도 있습니다.
There isn't a strrev
in standard C 그러나 그물 주변에는 많은 구현이 가능합니다. 여기에 내가 here을 발견 하나입니다 :이 주어진 문자열을 수정하고 장소에 역을 수행
#include <string.h>
char *strrev(char *str)
{
char *p1, *p2, c;
if (! str || ! *str)
return str;
for (p1 = str, p2 = str + strlen(str) - 1; p2 > p1; ++p1, --p2)
{
c = *p1;
*p1 = *p2;
*p2 = c;
}
return str;
}
하는 것으로.
그건 [XOR 스왑 트릭] (https://stackoverflow.com/questions/249423/how-does-xor-variable-swapping-work)의 끔찍한 학대입니다. 왜 임시 변수를 사용하고 메모리 액세스 수를 반으로 줄여야합니까? –
글쎄, 내가 말한대로 interwebs에서 그것을 발견했다. :) 네 말이 맞아, 완전히 불필요한거야. 나는 좋은 깨끗한 스왑을 사용하도록 편집 할 것이다. – ldgabbay
무엇이 문제입니까? –
마지막 닫기 중괄호'}'가 누락되었습니다. 실제로 물어볼 질문이 있습니까? – indiv
'0'! = '\ 0'... –