Программа должна использовать функцию hydroxide
для проверки введенной строки, чтобы увидеть, заканчивается ли она «oh» (или «ho») и возвращает значение 1, если это произойдет. Вот что я написал, и когда я запускаю программу, он просто зависает. Я все еще новичок, поэтому заранее извиняюсь, если это глупый вопрос.Функция для проверки строки зависает
#include <stdio.h>
#include <string.h>
#define MAX_LEN 10
int hydroxide(char *compound);
int main(void)
{
char compound[MAX_LEN];
int i, num;
printf("Enter compound> \n");
scanf("%s", compound);
for (i = 0; i < strlen(compound); ++i) {
if (islower(compound[i]))
compound[i] = toupper(compound[i]);
}
num = hydroxide(compound);
printf("%d", num);
return(0);
}
int hydroxide(char *compound)
{
char *end[4], *temp;
int last, status;
last = strlen(compound);
strcpy(end[], &compound[last - 2]);
if (strcmp(end[last - 2],end[last - 1]) > 0) {
temp = end[last - 2];
end[last - 2] = end[last - 1];
end[last - 1] = temp;
}
if (*end[last - 2] == 'H') {
if (*end[last - 1] == 'O')
status = 1;
}
return(status);
}
Всякий раз, когда я изменить тот я получаю 2 предупреждения для линии: «если (STRCMP (конец [последний - 2], конец [последний - 1])> 0) {', и оба они говорят: «[Warning] передающий аргумент 1« strcmp »делает указатель от целого без cast [включен по умолчанию]», а также говорит «[Note] expected« const char * », но аргумент имеет тип' символ '». –
Вы прокомментировали требуемый сегмент? –
Благодарим за редактирование. Это устранило проблему! –