gpt4 book ai didi

c - 我用 C 语言进行的简单加密有什么问题吗? (cs50 pset 2 - 地穴)

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

我不太明白这些错误从何而来。我正在尝试创建一个简单的 C 程序,它接受一个字符串并向 ASCII 值添加偏移量,以便创建一个极其简单的加密。

#include <stdio.h>
#include <cs50.h>
#include <stdlib.h>
#include <string.h>

char obscufate_char(char origchar, int offset){
if(strcmp(origchar, " ") != 0){
int temp = origchar;
char newChar = temp + 4;
return newChar;
}
else{
return 20;
}
}

int main(int argc, string argv[]){

if(argv[1] != NULL){
string message = argv[1];
}else{
printf("%s\n", "Enter a string to encrypt\n");
string message = GetString();
}

if(argv[2] != NULL){
int offset = atoi(argv[2]);
}else{
printf("%s\n", "Enter a offset\n");
int offset = GetInt();
}

printf("%s%s\n", "Your original text is: ", message);
printf("%s\n", "Your new message is: ");
for(int i = 0; i < strlen(message); i++){
printf("%c\n", obscufate_char(message[i]),offset);
}

return 0;
}
simple_crypt.c:7:12: error: incompatible integer to pointer conversion passing
'char' to parameter of type 'const char *'; take the address with &
[-Werror]
if(strcmp(origchar, " ") != 0){
^~~~~~~~
&
/usr/include/string.h:143:34: note: passing argument to parameter '__s1' here
extern int strcmp (__const char *__s1, __const char *__s2)
^
simple_crypt.c:20:10: error: unused variable 'message'
[-Werror,-Wunused-variable]
string message = argv[1];
^
simple_crypt.c:23:10: error: unused variable 'message'
[-Werror,-Wunused-variable]
string message = GetString();
^
simple_crypt.c:27:7: error: unused variable 'offset' [-Werror,-Wunused-variable]
int offset = atoi(argv[2]);
^
simple_crypt.c:30:7: error: unused variable 'offset' [-Werror,-Wunused-variable]
int offset = GetInt();
^
simple_crypt.c:33:46: error: use of undeclared identifier 'message'
printf("%s%s\n", "Your original text is: ", message);
^
simple_crypt.c:35:28: error: use of undeclared identifier 'message'
for(int i = 0; i < strlen(message); i++){
^
simple_crypt.c:36:33: error: use of undeclared identifier 'message'
printf("%c\n", obscufate_char(message[i]),offset);

最佳答案

simple_crypt.c:7:12: error: incompatible integer to pointer conversion passing
'char' to parameter of type 'const char *'; take the address with &
[-Werror]
if(strcmp(origchar, " ") != 0){

当函数需要 char * 时,您正在传递一个字符。 origchar 不是 char *。

simple_crypt.c:20:10: error: unused variable 'message'
[-Werror,-Wunused-variable]
string message = argv[1];

我假设 cs50.h 有一个“字符串”类型适合您。您正在 if 语句内进行初始化,并且您希望在 if 语句的范围之外看到它,但这是不会发生的。 if 语句外部的 message 与内部的 message 不同。里面的消息只是声明和初始化,但没有对其进行任何操作,本质上使其在其范围内未使用。对于编译器来说,if 语句之外的消息是未声明的变量。

您应该首先在 if 语句之外声明 message ,以便编译器知道该消息正在并将在 main 范围内创建,或者至少在 if 范围之外看到声明。您可以在 if 语句中为其赋值,但如果您希望在 if 语句之外看到它,则不应在 if 语句中声明它。 if 语句有其自己的作用域,因此在完成后,您初始化的消息将消失,无需对其进行任何操作。

对于offset和其余的message错误也是如此。

关于c - 我用 C 语言进行的简单加密有什么问题吗? (cs50 pset 2 - 地穴),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18028271/

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