2014-03-07 4 views
1

C 지식을 새로 고쳤으며 문자열을 뒤집기 위해이 프로그램을 교차 시켰습니다. 마지막 반전 된 문자열의 마지막 문자에 '\ 0'값을 할당해야한다는 느낌이 들었습니다. 그렇지 않으면 가비지 값이있을 수 있습니다. 이 코드가 맞는지 또는 수정해야하는지 알려주십시오. 미리 감사드립니다! man gets에 따라while 루프를 사용하여 C로 문자열 반전하기

#include<stdio.h> 
#include<string.h> 

void main() 
{ 
    char str[100],temp; 
    int i,j=0; 

    printf("nEnter the string :"); 
    gets(str); 

    i=0; 
    j=strlen(str)-1; 

    while(i<j) 
    { 
    temp=str[i]; 
    str[i]=str[j]; 
    str[j]=temp; 
    i++; 
    j--; 
    } 

    printf("nReverse string is :%s",str); 
    return(0); 
} 
+0

'마지막 역전 된 문자열의 마지막 문자가 '\ 0'값으로 지정되어야한다고 생각합니다. '시도해 보셨습니까? – yamafontes

+2

시도하기가 어렵습니까? – devnull

+5

같은 메모리 조각에있는 문자를 바꿔 넣기 때문에 마지막 '\ 0'은 그대로 있고 문자열의 끝 부분에 있습니다. –

답변

0

가 :

... 버퍼가 0

로 끝 나는 당신이 모든 설정 생각!

+3

또한'man gets'에 대해서 :'gets()를 사용하지 마십시오. 미리 데이터를 알지 못해서 얼마나 많은 문자 gets()가 읽히고,) 버퍼의 끝을 지나서 문자를 계속 저장하면 컴퓨터 보안을 깨는 데 사용되어 지므로 사용하는 것은 매우 위험합니다. 대신 fgets()를 사용하십시오. " –

+1

C11에서도'gets'가 실행되지 않습니다. – michaelmeyer

관련 문제