reverser()
отменяет cstring (не на месте). 99% времени, когда он работает, но какой-то ввод искажает его, например, появляется, если aStr2 [] назначается строка, состоящая из одного и того же символа, у нее будет ошибка.Нужна помощь в поиске ошибки, если строковый ввод состоит из одного и того же символа, один выходной символ поврежден
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* reverser(const char *str);
int main()
{
char aStr[] = "aaa";
char aStr2[] = "cccccc";
printf("%s %s", aStr, aStr2);
char* tmp = reverser(aStr2);//tmp now has garbage
printf("\n%s", tmp);
printf(" %s", aStr2);
return 0;
}
char* reverser(const char *str)
{
char* revStr = (char*)malloc(strlen(str));
int i;
for(i = strlen(str)-1; i >= 0; i--)
{
revStr[strlen(str)-1-i] = str[i];
}
return revStr;
}
дает
aaa cccccc
cccccc9 cccccc
Process returned 0 (0x0) execution time : 0.068 s
Press any key to continue
Обратите внимание на 9, что там не должно быть.
Давайте представим, что я просматривающие с изображениями выключен , Теперь, как я должен знать результат? Опубликуйте текст вместо скриншотов. –
[Также не указывайте возвращаемое значение 'malloc()'] (http://stackoverflow.com/questions/605845/do-i-cast-the-result-of-malloc/605858#605858). –
Возможный дубликат [C строк malloc (вывод)] (http://stackoverflow.com/questions/19249734/c-strings-malloc-output) – hyde