Указатели, Строки и функции в C
Я пропустил неделю занятий, в которых они освещали указатели, но я не смог получить заметки из класса, но мой HW должен, и я до сих пор не понимаю, как использовать указатели для передачи строк из функции в функцию.... ниже мой код, в котором я понимаю, что указатели запутаны, но я пытался читать другие форумы, но просто заблудился. Любая помощь приветствуется.
#include <stdio.h>
char* returnInPlace(char);
int palindrom(char, char );
main(void)
{
char newString[20];
printf("Enter a string: ");
scanf("%s",&newString);
char flippedString[20]=reverseInPlace(newString);
int palCheck= palindrome(newString, flippedString);
if (palCheck==0)
printf("\n\tThe reverse string is %s, so we don't have a palindrome.", flippedString);
else
printf("\n\tThe reverse string is %s, so we do have a palindrome.", flippedString);
}
char* reverseInPlace(char newString)
{
int iterator;
char flipped[20];
char *ptr1;
for(iterator=0;iterator<20;iterator++)
{
flipped[iterator]=firstString[19-iterator];
}
ptr1=flipped[];
return *ptr1;
}
int palindrome(char newString, char flippedString)
{
int iterator;
int palCheck=1;
for(iterator=0;iterator<20;iterator++)
{
if (firstString[iterator]==secondString[iterator])
continue;
else
{
palCheck=0;
break;
}
}
return palCheck;
}
1 ответ
Проблема 1
В char* reverseInPlace(char newString)
вы используете
return *ptr1;
что неправильно. То, что вы можете хотеть
return ptr1;
Проблема 2
ptr1=flipped[];
неправильно. Здесь вы назначаете базовый адрес локальной переменной flipped
и возвращая это значение. flipped
перестанет существовать после reverseInPlace()
заканчивает исполнение Вам нужно использовать динамическое распределение памяти.
Проблема 3
char flippedString[20]=reverseInPlace(newString);
неправильно. Вы не можете назначить массив с =
если только как инициализация во время определения.
Проблема 4
char* reverseInPlace(char newString)
это определение функции выглядит неправильно, если посмотреть, как она вызывается. Может быть, то, что вы хотите, это
char* reverseInPlace(char* newString)
вместо.
...... и, может быть, еще много. Настоятельно рекомендуем прочитать хорошую книгу об основах указателей и языка Си, прежде чем приступать к написанию кода.