提问人:O D E 提问时间:9/23/2023 更新时间:9/23/2023 访问量:52
有人知道我在这个程序中做错了什么吗?
Anyone knows what I did wrong in this program?
问:
我正在尝试使用此程序在括号中加密()和解密()字符串,但它会不断加密和解密右括号和后面的单词。
if (strncmp(input, "encrypt", 7) == 0) {
char *textToEncrypt = input + 8; // Skip "encrypt" and the space
if (*textToEncrypt == '(') {
textToEncrypt++; // Skip the opening parenthesis
char *closingParenthesis = strchr(textToEncrypt, ')');
if (closingParenthesis) {
*closingParenthesis = '\0'; // Terminate the string at the closing parenthesis
}
}
encrypt(textToEncrypt);
}
void encrypt(char text[]) {
char encryptedChar;
char array[1000] = "";
for (int i = 0; i < strlen(text); i++) {
encryptedChar = text[i] + 5;
//printf("\nThe ASCII Value of %c is %u\n", encryptedChar, (unsigned char)encryptedChar);
strncat(array, &encryptedChar, 1);
}
printf("%s\n", array);
memset(array, 0, sizeof array);
}
解密代码类似于加密,只是反转了。
Result
Enter command: encrypt(hi)
mn.
Enter command: decrypt(mn)
hi$
Enter command: encrypt(hi
mn
Enter command: decrypt(mn
hi
Enter command: encrypt(hi)ghjkl
mn.lmopq
Enter command: decrypt(mn)ghjk
hi$bcef
Enter command:
如何让它只加密/解密括号中的单词?
答:
1赞
ikegami
#1
encrypt(textToEncrypt);
应该在紧接之后(在最里面)。*closingParenthesis = '\0'
if
input + 8
应该是 .您在上一行中使用的事实应该是一个提示!也许你应该避免使用“幻数”并推导出这些常量......input + 7
7
评论
0赞
O D E
9/23/2023
就是这样。为了一个号码浪费了 15 分钟。多谢
评论