【发布时间】:2017-11-09 16:00:39
【问题描述】:
#define SIZE 1024
char encryptEVEN(char *c)
{
int i;
i = 0;
char enEVEN[SIZE], temp[SIZE];
while (/*c[i] != NULL &&*/c[i] != '\0')
{
if (i % 2 == 0 || i - 3 == 0)
{
enEVEN[i] = c[i];
i++;
}
}
strcpy(temp, enEVEN);
return enEVEN;
}
int main()
{
char charr[SIZE], enEVEN[SIZE];
strcpy(enEVEN, encryptEVEN(charr));
printf("%s", enEVEN);
}
你好, 我正在尝试在 C 中传递并返回一个字符,但我不断收到警告并且没有显示输出我认为问题在于函数的返回..我可以得到一些帮助
【问题讨论】:
-
enEVEN是一个数组;return enEVEN;尝试从应该返回char的函数返回char *。你的编译器不高兴并不奇怪。您的代码不可读。请学会系统地缩进。请注意,将函数更改为返回char *不是解决方案;然后,您正在使用一个不再定义的变量,这会导致未定义的行为(也就是神秘的错误)。 -
发布有关构建错误或警告的问题时,向我们展示! 将输出作为文本完整完整地复制,然后将其粘贴到问题正文中,不要修改。请read about how to ask good questions.
-
请edit您的问题并显示一个字符串示例及其加密版本。
encryptEVEN中的算法非常奇怪,以至于我无法猜测encryptEVEN应该做什么。 -
while (c[i] != '\0') { if (i % 2 == 0 || i - 3 == 0) { enEVEN[i] = c[i]; i++; } }如果c[0] && c[1]是一个无限循环。