我的程序旨在制作名词的复数。错误来自第"char *pstr = userNoun[lengthStr - 1];"
行。有人能告诉我这里的错误是什么吗?
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
void pluralNoun(char userNoun[27]){
int lengthStr = 0;
const char caseOne[2] = "es";
const char caseTwo[2] = "s";
lengthStr = strlen(userNoun);
char *pstr = userNoun[lengthStr - 1];
if(strncmp(pstr - 1, "ch", 2) == 0){
strcat(userNoun, caseOne);
}
else if(strncmp(pstr - 1, "sh", 2) == 0){
strcat(userNoun, caseOne);
}
else if(*pstr == 's'){
strcat(userNoun, caseOne);
}
else if(*pstr == 'y'){
userNoun[lengthStr - 1] = 'i';
strcat(userNoun, caseOne);
}
else {
strcat(userNoun, caseTwo);
}
printf("The plural of your noun is %s\n", userNoun);
}
int main(void){
char userVar[25];
printf("Enter a noun no more than 25 characters in length in lower case letters:\n");
scanf("%s", userVar);
pluralNoun(userVar);
return 0;
}
答案 0 :(得分:1)
您有两个错误:
由于strcat没有重新分配,请确保缓冲区有足够的空间用于附加后缀和空终止符。
答案 1 :(得分:0)
您在问题上指出的错误意味着您尝试初始化指针变量char *pstr
,其值为userNoun[lengthStr - 1]
,这是char
值(而非char
1}}指针)
编译器消息可能听起来有点不精确,但确实如此。 char值取为数字,目标类型不是。