#include <stdio.h>
#include <cs50.h>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
int main( int argc, string argv[])
{
if(argc!=2)
{
printf("One more string \n");
}
string key = argv[1];
else if(!isalpha(key))
{
printf("Prompt only alphabet letters\n");
}
else
{
string p = GetString();
for ( i=0, j=0, n=strlen(p); i<p; i++, j++)
{
if(j>=stlrlen(p))
{
j=0;
}
if(isupper(p[i]))
{
printf("%c", ((p[i] +key[j])%26)+'A');
}
if(islower(p[i]))
{
printf("%c", ((p[i] + key[j])%26)+'a');
}
if(!isupper(p[i]) && !islower(p[i]))
{
printf("%c", p[i]);
}
printf("\n");
return 0;
}
}
}
我的代码出了什么问题? CS50设备带给我一个错误
c:15:1 expected expression.
我的代码中有什么意义吗? 有人能帮我吗? 如果我只是删除了else代码块,它会给else带来同样的错误。
答案 0 :(得分:2)
我认为问题在于您无法分享if
和else if
或if
和else
if(argc!=2)
{
printf("One more string \n");
}
string key = argv[1]; // This is the problem ➞ it cannot sit in the middle of if and else or else if
else if(!isalpha(key))
{
printf("Prompt only alphabet letters\n");
}
此外,您可能需要制作else if
和else
常规if
语句,因为它看起来像是在进行一些验证
此外,由于您在for循环中有i<p
但p
是一个字符串。此外,由于您不在循环中更新n
,因此您应该在
int n = strlen( p );
for (int i=0, j=0; i<n; i++, j++)
尽管声明了n并将其赋值为strlen( p )
,但您还是在for-loop中使用了函数调用。这没有什么不对,使用你指定的变量可能更有意义。
答案 1 :(得分:1)
if和else if语句之间不能有代码。
string key = argv[1];
不能存在