gpt4 book ai didi

c - C中不允许声明错误

转载 作者:太空狗 更新时间:2023-10-29 15:11:33 25 4
gpt4 key购买 nike

下一行有问题 int (*f)(int, int) = (argv[2][0] == 'd') ,在编译时它说 declaration not allowed here .是否应该在开始时声明该行,还有更好的方法吗?如果有任何建议,我们将不胜感激?

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

int encode(int ch, int key) {
if (islower(ch)) {
ch = (ch-'a' + key) % 26 + 'a';
ch += (ch < 'a') ? 26 : 0;
}
else if (isupper(ch)) {
ch = (ch-'A' + key) % 26 + 'A';
ch += (ch < 'A') ? 26 : 0;
}
return ch;
}

int decode(int ch, int key) {
return encode(ch, -key);
}

int main(int argc, char **argv) {
int ch;
int key;

if (argc < 2) {
printf("USAGE: cipher <integer key> <encode | decode>\n");
printf("Then, just type your text and it will automatically output the en/de crypted text! :)\n");
return 1;
}

key = atoi(argv[1]);
if (key < 1 || key > 25) {
printf("Key is invalid, or out of range. Valid keys are integers 1 through 25.\n");
return 1;
}

int (*f)(int, int) = (argv[2][0] == 'd') ?
decode :
encode;

while (EOF != (ch=getchar()))
putchar(f(ch, key));

return 0;
}

最佳答案

在 C(C99 之前)中,您必须在 block 的开头声明变量。

将您的代码编译为 C99,或更改代码以便在 block 的开头声明 f

关于c - C中不允许声明错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13611062/

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