Мой код дает мне ошибку сегментации, и я не могу найти то, что я делаю неправильно:Сегментация Неисправность C
#include <stdio.h>
#include <string.h>
char find(char name[], char allNames[][10], int length)
{
int i=0;
for (i = 0; i < length; i++) {
if (strcmp(allNames[i],name) == 1) {
printf("%i",i);
return *name;
}
}
return -1;
}
main(){
char allNames[][10] = {"cat","dog","frog","log","bog"};
char name[] = "log";
int length=5;
printf("%s",find(name,allNames,length));
}
Я очень увлечена, чтобы понять все механизмы, происходящие здесь и что я делаю неправильно для завтрашнего экзамена. Спасибо за вашу помощь!
EDIT: Действительно оцените ответы и информацию ребята! Я на самом деле очень новичок в C и просто привык к тому, что означает каждая вещь. Частный вопрос экзамена, который я рассматриваю:
(a) Следующая функция предназначена для поиска имени строки в массиве allNames. Если найдено, он возвращает позицию имени в массиве. Если не найдено , он возвращает -1. Измените код так, чтобы он работал правильно.
int find(char name[], char allNames[][10])
{
for (i = 0; i < 10; i++) {
if (allNames[i] == name) {
return name;
}
}
return -1;
}
И я пытаюсь получить программу для работы в пределах этих параметров. Ура :)
Выполнение неверных действий (1): не использовать отладчик. –
ваш фикс retunrs char. не char *. – wildplasser
Отметьте свой код, проверьте предупреждения gcc. –