【发布时间】:2021-01-20 18:18:38
【问题描述】:
这是我的代码:
#include <stdio.h>
#include <cs50.h>
#include <math.h>
#include <ctype.h>
#include <string.h>
bool is_valid_key(string s);
int main(int argc, string argv[])
{
if (argc != 2 || !is_valid_key(argv[1]))
{
printf("Usage: ./ceaser key\n");
return 1;
}
string P = get_string("Plaintext:");
int s = strlen(P);
int c[100];
for(int i = 0; i < s; i++)
{
c[i] = ((int)P[i] + argc) ;
//printf("argc=%d\n",argc);
printf("P[%d]=%d\n",i,P[i]); // for testing purpose
printf("C[%d]=%s\n\n",i,(string)c[i]); // for testing purpose`enter code here`
//printf("\n\n\n");
}
printf("C1:%s\n",(string)c);
return 0;
}
bool is_valid_key(string s)
{
for (int i = 0; i < strlen(s); i++)
{
char ch = s[i];
if (!isdigit(ch))
{
return false;
}
}
return true;
}
错误:clang -ggdb3 -O0 -std=c11 -Wall -Werror -Wextra -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wshadow caeser.c -lcrypt -lcs50 -lm -o caeser caeser.c:52:33: error: cast to 来自较小整数类型“int”的“字符串”(又名“字符 *”) [-Werror,-Wint-to-pointer-cast] printf("C[%d]=%s\n\n",i,(string)c[i]);
我想你可能知道cs50课程中的caeser主题,所以我正在处理这段代码,我得到了这个错误,我真的不知道如何解决它,如果你知道,请告诉我,真的很有帮助。
【问题讨论】:
-
请edit您的问题包括错误的完整和完整复制粘贴。还请在您获得它的代码中包含注释。
-
错误信息是指哪一行?
-
c[i]是int类型。转换它不太可能将其转换为指向char数组的有意义的指针,这是%s所期望的。 -
你想要
%d而不是%s