So basically:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
int main(void){
//test strrev
char s[50];
char s2[50];
char *ps;
int i=0;
printf("String to reverse: ");
fgets(s,50,stdin);
ps=strrev(s);
strcpy(s2,ps); //copy contents to a string array
//i did the copy because using printf("%s", ps); did the same thing
printf("Reversed string: %s\n", s2); //PECULIAR, s2 enters line feed char in s2[0]
//test loop to determine the inserted character
while(1){
if(s2[i]==10) {printf("is 10,%d", i); break;}; //the proof of LF
if(s2[i]==12) {printf("is 12"); break;};
if(s2[i]==13) {printf("is 13"); break;};
if(s2[i]==15) {printf("is 15"); break;};
i++;
}
for(i=0;i<50;i++){ //determine where the characters are positioned
printf("%c: %d\n", s2[i], s2[i]);
if(s2[i]=='\0') break;
}
system("PAUSE");
return 0;
}
By running this program and entering the string….let’s say “darts” will reverse the string in the array that will have the elements s2[0]=‘\012’=10(decimal), …strad…, s2[7]=’\0′.
Is it normal for strrev to behave as such?
fgetsstores the newline in the string. So when youstrrev,\n(linefeed) will be the first element.EDIT
Just tested it on Visual Studio: