我在网上查找了该信息,而我在使用C时只能找到C ++的线程,所以我来问一下,对不起,是否重复。
我仍在学习,并且试图了解
我刚刚了解了strcpy和strcmp,但是我的大脑无法处理以下代码为何无效的原因;
void ifelse();
char nametype[100];
char typeofname[100];
char truth[100];
int main() {
char name[100];
int age;
printf("\n Print \n");
ifelse();
printf("Enter your name: ");
fgets(name, 100, stdin);
printf("Enter your age: ");
scanf("%d", &age);
if (age > 50) {
strcpy(truth[100], "and you are an old person.");
}
if (age < 50) {
strcpy(truth[100], "and you are relatively young.");
}
else {
strcpy(truth[100], "and you're a middle age person with issues...");
}
printf("Hello, your %s is %s, %s", nametype, name, truth);
return 0;
}
void ifelse() {
printf("Enter your name type (firstname/lastname): ");
fgets(typeofname, 100, stdin);
if (strcmp(typeofname, "firstname") == 0) {
strcpy(nametype[100], "first name");
}
if (strcmp(typeofname, "lastname") == 0) {
strcpy(nametype[100], "last name");
}
}
在if和else语句中,当我尝试复制名为“ truth”的字符串时遇到错误,我还尝试键入strncpy以防万一,但是没有。
它应该继续执行底部的打印功能,但要么不打印变量,要么输出分配错误
答案 0 :(得分:0)
strcpy
接受两个指向缓冲区的指针,即数组。 truth[100]
不是指向缓冲区的指针,它是数组之后的元素。因此正确的呼叫应如下所示:
strcpy(truth, "and you are an old person.");
strcpy(nametype, "first name");
更正代码中的所有类似调用。