Вход lakenum
является целым числом от 1 до 5. Учитывая, что число, то функция должна присвоить имя и возвращает массив строк в основную функцию, но вместо этого я получаю ошибки указателя:Назначение различных строк массиву char с использованием переменной
error: return makes integer from pointer without a cast
error: function returns address of local variable
я вызываю функцию, используя printf ("%s", lakenamer(lakenum));
int lakenamer(lakenum) {
char lname[20] = "0";
if (lakenum == 1) {
strncpy(lname, "Ontario", 20);
} else if (lakenum == 2) {
strncpy(lname, "Erie", 20);
} else if (lakenum == 3) {
strncpy(lname, "Huron", 20);
} else if (lakenum == 4) {
strncpy(lname, "Muskoka", 20);
} else if (lakenum == 5) {
strncpy(lname, "Simcoe", 20);
}
printf("%s",lname);
return (lname);
}
'strncpy' - плохая идея, вы должны использовать' strcpy' или 'snprintf' вместо этого. –
@ThisGuy Вы должны принять и поддержать любые ответы, если они вам помогут. –
Я не могу проголосовать недостаточно, но я просто изменил его так, чтобы функция вызывалась, и печатала данные вместо того, чтобы возвращать данные обратно к основной функции, было проще – ThisGuy