이 while 루프
while(i<sizeof(s))
{
s[i]=a[size];
}
인덱스 i가 (이 처음에 제대로 초기화한다) 입력 문자열 외부를 가리키는 값을 가지고 있기 때문에
는 이해가되지 않습니다 루프에서 루프가 변경되지 않고 처음 초기화되지 않았기 때문에 루프가 무한합니다.
s[i]=a[size];
은 항상 동일하며 다시 배열 외부의 메모리를 나타냅니다.
<string.h>
에 선언 된 함수가 프로그램에서 사용되지 않았 음을 고려하십시오. 헤더가 제거 될 수 있습니다.
이 프로그램은 다음과 같은 방법으로
#include <stdio.h>
#define N 100
int main()
{
char s[N], d[N];
printf("Enter the word you want to get reversed: ");
fgets(s, N, stdin);
size_t n = 0;
while (s[n] != '\0' && s[n] != '\n') n++;
for (size_t i = 0; i != n; i++) d[i] = s[n-i-1];
d[n] = '\0';
printf("The reversed string is : %s\n", d);
return 0;
}
당신은 보조 배열을 사용하지 않고 문자열을 취소 할 수 있습니다 볼 수 있습니다. 예를 들어
#include <stdio.h>
#define N 100
int main()
{
char s[N];
printf("Enter the word you want to get reversed: ");
fgets(s, N, stdin);
size_t n = 0;
while (s[n] != '\0' && s[n] != '\n') n++;
s[n] = '\0';
for (size_t i = 0; i < n/2; i++)
{
char c = s[i];
s[i] = s[n-i-1];
s[n-i-1] = c;
}
printf("The reversed string is : %s\n", s);
return 0;
}
힌트'크기 = 용를 sizeof (들) (I는를 sizeof <(S)) 동안 잘못 '는 .. –
'{(S)는 [I]는 [크기] =; }'는 정의되지 않은 동작 옆에 무한 루프를 발생시킵니다. – haccks
또한 'i'는 초기화되지 않은 상태로 사용된다는 점에 유의하십시오. UP에 또 다른 허점이 있습니까? – haccks