gpt4 book ai didi

string - 在C语言中进行替换时输出的多余字符和符号

转载 作者:行者123 更新时间:2023-12-03 08:39:32 26 4
gpt4 key购买 nike

当我使用以下键运行代码时,将输出多余的字符...
终端窗口:
$ ./substitution abcdefghjklmnopqrsTUVWXYZI
明文:heTUXWVI ii ssTt
密文:heUVYXWJ jj ttUuh |
这是说明(cs50替换问题)
设计和实现一个替代程序,该程序使用替代密码对消息进行加密。
在〜/pset2/substitution目录中的一个名为replacement.c的文件中实现您的程序。
您的程序必须接受一个命令行参数,即用于替换的键。键本身应该不区分大小写,因此键中的任何字符都是大写还是小写都不会影响程序的行为。
如果您的程序在执行时没有任何命令行参数或带有多个命令行参数,则您的程序应打印您选择的错误消息(带有printf),并从main返回值1(这往往表示错误) )。
如果键无效(例如,不包含26个字符,包含不是字母字符的任何字符或不完全包含每个字母一次),则程序应打印您选择的错误消息(带有printf)并从main返回值立即为1。
您的程序必须输出纯文本:(没有换行符),然后提示用户输入纯文本字符串(使用get_string)。
您的程序必须输出密文:(不带换行符),后跟明文的相应密文,并用明文中的每个字母字符替换密文中的相应字符;非字母字符应原样输出。
您的程序必须保留大小写:大写字母必须保持为大写字母;小写字母必须保留为小写字母。
输出密文后,应打印换行符。然后,您的程序应通过从main返回0退出。
我的代码:

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

int main(int argc,string argv[])
{
char alpha[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
string key = argv[1];
int totalchar = 0;

for (char c ='a'; c <= 'z'; c++)
{
for (int i = 0; i < strlen(key); i++)
{
if (tolower(key[i]) == c)
{
totalchar++;
}
}
}

//accept only singular 26 key
if (argc == 2 && totalchar == 26)
{
string plaint = get_string("plaintext: ");


int textlength =strlen(plaint);
char subchar[textlength];


for (int i= 0; i< textlength; i++)
{
for (int j =0; j<26; j++)
{
// substitute

if (tolower(plaint[i]) == alpha[j])
{
subchar[i] = tolower(key[j]);

// keep plaintext's case
if (plaint[i] >= 'A' && plaint[i] <= 'Z')
{
subchar[i] = (toupper(key[j]));
}
}

// if isn't char
if (!(isalpha(plaint[i])))
{
subchar[i] = plaint[i];
}
}
}

printf("ciphertext: %s\n", subchar);
return 0;
}
else
{
printf("invalid input\n");
return 1;
}



}

最佳答案

strcmp比较两个字符串。 plaint[i]alpha[j]是字符。可以与“常规”比较运算符(例如==)进行比较。

关于string - 在C语言中进行替换时输出的多余字符和符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63098591/

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