Я пытаюсь научить себя языку C. До сих пор мой переход с C был грубым. Я делаю проблему из книги «Введение в язык C», и есть проблема, которая должна читать строку от пользователя, а затем запрашивать у пользователя значение int. Моя работа была найти это конкретное слово, соответствующее int.Ошибка шины с использованием массивов символов в c
Пример
Hello World, как вы все делаете. // Это линия читается
2 // слово будет выведено на консоль
Ожидаемое Выходной
Мир
Ниже приведен фрагмент кода моего кода, который, я думаю, дает мне ошибку шины.
void corrspndToInt (char *theLine, int word, char *result) {
int start;
int end;
int spaces = 1;
result = "";
//int i;
//search for the nth non-blank character
for(start = 0; start < strlen(theLine) && (spaces < word); start++) {
if(isspace (theLine[ start ])) {
spaces++;
} // end if
} // end for loop
//only need to continue if we haven't gone past the end of the string
if(start < strlen(theLine)) {
//the next blank character is the end
for (end = start; end < strlen(theLine) && (!isspace (theLine[ end ])) ; end++) {
;
} // end for loop
//we now have the word
result = strncpy (result, theLine+start, end - start);
} // end if
}
Это, как я печать результат в main
функции.
printf("%s\n", result);
Теперь, когда я преподавал язык C себе и через SO, я узнал, что возвратные массивы char не должны быть выполнены. Было два метода динамического распределения с использованием функции malloc
, и был еще один метод, который я реализовал в своем коде. Я проверил свой другой метод, и, похоже, в этом нет ничего плохого. Проблема здесь заключается в этом методе, поскольку он не получает правильного слова.
Я пытался отладить мою программу, но, по-видимому, Mac не принимает команду gdb
. Я установил инструменты командной строки и все остальное, но он все еще говорит
Команда не найдена
Может кто-нибудь, пожалуйста, руководство меня в правильном направлении здесь? Я переусердствовал эту проблему за последние 1 час.
Было бы проще получить помощь, если вы разместите [mcve]. –
'result =" ";': Я думаю, что это плохая идея. – BLUEPIXY
Должен ли я использовать цикл for, чтобы вручную назначать каждому индексу пробел? Также может быть причиной ошибки шины. Я проверил свой другой метод, и он работает нормально. Проблема, похоже, в этом. @BLUEPIXY – Saad