Im пытается передать символ array
значение персонажу pointer
. то это значение возвращается к методу, который его вызывает, но после его получения значение становится мусором. Может кто-нибудь мне помочь?Возвращаемое значение строки становится мусором
#include <stdio.h>
const char * getname(){
char nam[10];
char * name;
gets(nam);
name = nam;
return name;
}
main(){
printf("%s",getname());
getch();
}
все в порядке, пока строка не получает возвращается
Остановить возврат адреса локальной переменной в вызываемой функции. То, что вы делаете, - это неопределенное поведение. И используйте 'fgets()', а не 'gets()'.Эта функция настолько плоха, что она была полностью устранена с C11, устаревшая на C99. – WhozCraig
http://en.wikipedia.org/wiki/Dangling_pointer – Jeyaram
Хотелось бы, чтобы было легко найти эту проблему, это так часто встречается для начинающих. Кроме того, OP, вам не нужна переменная указателя. Массивы распадаются на указатели на первый элемент, когда это необходимо, вы могли бы просто (еще неправильно) написать: 'return nam'; –