首先,分享一个网站:https://manual.cs50.io/
接下来:上代码——
Caesar凯撒密码:程序接受一个命令行参数:k(非负整数)。输入明文字符串,通过将每个字母“旋转”k个位置来加密并输出,非字母字符输出不变。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<cs50.h>
#define N 50
int main(int argc, char * argv[])//带形参的main函数,如 main( int argc, char* argv[], char **env ) ,是UNIX、Linux以及Mac OS操作系统中C/C++的main函数标准写法,并且是血统最纯正的main函数写法。
{
//判断命令行参数个数(argc的值等于位置参数(命令行参数)总个数)
if(argc != 2)
return 1;
// main()函数的返回值并不是返回给程序的其他部分,而是返回给操作系统。 通常约定,返回值为0意味着程序运行成功,为非0则意味着存在问题。
string s;
char p[N];
int k;
//判断k是否合法
k = atoi(argv[1]);//atoi (表示 ascii to integer)是把字符串转换成整型数的一个函数
if(k<0)
{
printf("Error caesar key\n");
return 1;
}
// input k
// printf("k = %d\n",k);
s = get_string("plaintext: ");
printf("ciphertext:");
for(int i=0 , n=strlen(s); i<n ; i++ )
{
if(s[i] >='A'&&s[i]<='Z')
p[i] = ((s[i] - 65 + k) % 26) + 65;
else if(s[i]>='a'&&s[i]<='z')
p[i] = ((s[i] - 97 + k) % 26) + 97;
else
p[i] = s[i];
printf("%c",p[i]);
}
getchar();
return 0;
}
在CS50 IDE上写代码与在visual和dev上写代码还是不一样的,尤其是
#include<cs50.h>
里面的函数调用。