gpt4 book ai didi

c - "Redefinition - Different Basic Types"在 C 中使用指针时出错

转载 作者:行者123 更新时间:2023-11-30 19:33:18 27 4
gpt4 key购买 nike

我应该编写两个函数。一个将采用 char 数组并将所有字母变为大写,另一个将反转数组并打印出名称。我要使用指针。我非常有信心我已经正确编写了函数,但我对 C 很陌生并且似乎在指针方面遇到了困难。我收到两个错误,每个函数一个错误。他们都说“‘上部/反转’:重新定义;不同的基本类型”。我尝试过更改多项内容,但似乎无法解决问题。你能看到我缺少什么吗?感谢您的帮助。

#include <stdio.h>
#include <ctype.h>
#include <string.h>

void main()
{
char firstName [10] = "John Smith";
char secondName[10] = "Mary Cohen";
char thirdName[13] = "Carl Williams";

UpperCase(firstName);
UpperCase(secondName);
UpperCase(thirdName);

Reversed(firstName);
Reversed(secondName);
Reversed(thirdName);
}

void UpperCase(char* name)
{
for (int i = 0; i < strlen(name); i++)
{
*(name + i) = toupper(*(name + i));
}
}

void Reversed(char* name)
{
char temp[13];
int count = 0;
for (int i = strlen(name); i > 0; i--)
{
temp[count] = *(name + i);
count++;
}
printf("%s\n", temp);
}

最佳答案

C 编译器是有条不紊的。它期望在使用事物之前先对其进行定义。因此有几种方法可以解决这个问题:

一种方法是对函数进行排序,以便在调用它们的位置上方声明它们:

#include <stdio.h>
#include <ctype.h>
#include <string.h>

void UpperCase(char* name)
{
for (int i = 0; i < strlen(name); i++)
{
*(name + i) = toupper(*(name + i));
}
}

void Reversed(char* name)
{
char temp[13];
int count = 0;
for (int i = strlen(name); i > 0; i--)
{
temp[count] = *(name + i);
count++;
}
printf("%s\n", temp);
}

void main()
{
char firstName [10] = "John Smith";
char secondName[10] = "Mary Cohen";
char thirdName[13] = "Carl Williams";

UpperCase(firstName);
UpperCase(secondName);
UpperCase(thirdName);

Reversed(firstName);
Reversed(secondName);
Reversed(thirdName);
}

另一种方法是对函数进行原型(prototype)设计(在调用它们的地方之上):

#include <stdio.h>
#include <ctype.h>
#include <string.h>

void UpperCase(char*);
void Reversed(char*);

void main()
{
char firstName [10] = "John Smith";
char secondName[10] = "Mary Cohen";
char thirdName[13] = "Carl Williams";

UpperCase(firstName);
UpperCase(secondName);
UpperCase(thirdName);

Reversed(firstName);
Reversed(secondName);
Reversed(thirdName);
}

void UpperCase(char* name)
{
for (int i = 0; i < strlen(name); i++)
{
*(name + i) = toupper(*(name + i));
}
}

void Reversed(char* name)
{
char temp[13];
int count = 0;
for (int i = strlen(name); i > 0; i--)
{
temp[count] = *(name + i);
count++;
}
printf("%s\n", temp);
}

关于c - "Redefinition - Different Basic Types"在 C 中使用指针时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46086370/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com