【发布时间】:2021-11-24 10:19:26
【问题描述】:
我正在尝试编写一个可以识别回文的程序。
我已经做了一个函数来识别它是否是回文并成功地在 main 中使用。
但是,我还想删除任何空格、数字或特殊字符,因为它们可能会干扰将其识别为一个。
我尝试在 main 中使用 inputstring(isalphabet) 调用它,但它根本无法编译。还尝试将 isalphabet 更改为 char 而不是 void,并给它return inputstring,但它不起作用。任何和所有建议表示赞赏
#include <stdio.h>
int isPalindrome(char inputString[]);
int main() {
char inputString[100];
int ret;
scanf("%s", inputString);
ret = isPalindrome(inputString);
printf("%d", ret);
}
int isPalindrome(char inputString[]) {
int count = 0;
int result;
while (inputString[count] != '\0') {
count++;
}
char stcp[100];
int i = count, j = 0;
while (i != 0)
stcp[j++] = inputString[--i];
stcp[j] = 0;
if (strcmp(inputString, stcp) == 0) {
result = 1;
}
else {
result = 0;
}
return result;
}
void isalphabet(char inputString[], char nystring[]) {
int count, i, ny_i = 0;
count = strlen(inputString);
for (i = 0; i < count; i++) {
if (isalpha(inputString[i]) != 0) {
nystring[ny_i] = inputString[i];
ny_i++;
}
nystring[ny_i] = '\0';
}
}
【问题讨论】:
-
如果您询问有关构建错误的问题,请将 full 和 complete 错误输出复制粘贴到问题本身中。另外,请在出现错误的行上添加评论。
-
#include
-
inputstring(isalphabet) - 你是这样称呼它的吗? inputstring 是一个变量,isalphabet 是一个函数,所以它应该类似于 isalphabet(inputstring, nystring)
-
@notmenotyou 移动此语句 nystring[ny_i] = '\0';在 for 循环之外。
-
旁注:你需要包含标题
<ctype.h>才能使用isalpha()函数;另外,您需要将isalphabet()的原型(即:void isalphabet(char[], char[]);)放在main()之前,就像对isPalindrome()所做的那样。
标签: c function-pointers c-strings palindrome function-definition