C 如何在';a';和';z';
我有一个练习,我需要取一个字符串,反转它,然后我输入一个数字,每个字母需要根据这个数字移动几个字母,我需要在所有这些中使用指针。 这是我的密码:C 如何在';a';和';z';,c,C,我有一个练习,我需要取一个字符串,反转它,然后我输入一个数字,每个字母需要根据这个数字移动几个字母,我需要在所有这些中使用指针。 这是我的密码: #include <stdio.h> #define LEN 100 void decryptText(char* encText, int n); int main(void) { char str[LEN] = { 0 }; int num = 0; printf("Please enter a strin
#include <stdio.h>
#define LEN 100
void decryptText(char* encText, int n);
int main(void)
{
char str[LEN] = { 0 };
int num = 0;
printf("Please enter a string :\n");
fgets(str, LEN, stdin);
printf("\nPlease enter a number:\n");
scanf("%d", &num);
decryptText(str, num);
getchar();
system("PAUSE");
return 0;
}
void decryptText(char* encText, int n)
{
int i = 0, len = 0 , value = 0 ;
char moved = "";
for (i = 0; i<LEN; i++){
if (*encText == '\0')
{
break;
}
encText++;
}
len = i;
encText--;
printf("The secret message is: \n\n");
for (i = len; i>0; i--)
{
value = (int*)(encText--);
moved = (char)(value + n);
*encText = moved;
printf("%c", *encText);
}
printf("\n\n");
}
#包括
#定义LEN 100
无效文本(字符*加密文本,整数n);
内部主(空)
{
char str[LEN]={0};
int num=0;
printf(“请输入字符串:\n”);
fgets(str、LEN、stdin);
printf(“\n请输入一个数字:\n”);
scanf(“%d”和&num);
解密文本(str,num);
getchar();
系统(“暂停”);
返回0;
}
无效解密文本(字符*加密文本,整数n)
{
int i=0,len=0,value=0;
char-moved=“”;
对于(i=0;i0;i--)
{
值=(int*)(encText--);
移动=(字符)(值+n);
*encText=已移动;
printf(“%c”,*encText);
}
printf(“\n\n”);
}
程序不起作用,我仍然只需要在“a”和“z”之间创建字母,并且我无法更改指针来移动字母。\include
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#define LEN 100
void decryptText(char* encText, int n);
int main(void){
char str[LEN] = { 0 };
int num = 0;
printf("Please enter a string :\n");
fgets(str, sizeof(str), stdin);
str[strcspn(str, "\n")] = '\0';//remove newline
printf("\nPlease enter a number:\n");
scanf("%d", &num);
num = num % 26;
decryptText(str, num);
//getchar();
system("PAUSE");
return 0;
}
void decryptText(char* encText, int n){
int i = 0, len = 0 , value = 0 ;
unsigned moved = '\0';
for (i = 0; *encText; i++){
++encText;
}
len = i;
--encText;
printf("The secret message is: \n\n");
for (i = len; i>0; i--){
value = *encText;
if(isupper(value))
value = tolower(value);
if(islower(value)){
moved = value + n;
if(moved > 'z')
moved = 'a' -1 + moved - 'z';
else if(moved < 'a')
moved = 'z' +1 + moved - 'a';
*encText = moved;
}
printf("%c", *encText--);
}
printf("\n\n");
}
#包括
#包括
#包括
#定义LEN 100
无效文本(字符*加密文本,整数n);
内部主(空){
char str[LEN]={0};
int num=0;
printf(“请输入字符串:\n”);
fgets(str,sizeof(str),stdin);
str[strcspn(str,“\n”)]='\0';//删除换行符
printf(“\n请输入一个数字:\n”);
scanf(“%d”和&num);
num=num%26;
解密文本(str,num);
//getchar();
系统(“暂停”);
返回0;
}
无效解密文本(字符*加密文本,整数n){
int i=0,len=0,value=0;
未签名移动='\0';
对于(i=0;*encText;i++){
++电子文本;
}
len=i;
--电子文本;
printf(“秘密消息是:\n\n”);
对于(i=len;i>0;i--){
值=*文本;
如果(isupper(值))
值=tolower(值);
如果(islower(值)){
移动=值+n;
如果(移动>z')
移动='a'-1+移动-'z';
else if(移动<'a')
移动='z'+1+移动-'a';
*encText=已移动;
}
printf(“%c”,*encText--”);
}
printf(“\n\n”);
}
欢迎使用堆栈溢出!听起来您可能需要学习如何使用调试器逐步完成代码。有了一个好的调试器,您可以逐行执行您的程序,并查看它偏离预期的地方。这是一个必要的工具,如果你要做任何编程。进一步阅读:。您的代码没有任何意义。*ptr++将推进指针,而(*ptr)++将增加内容,例如将“A”更改为“B”。由于您没有推进encText
,因此代码*encText=moved代码>只需在每次迭代中覆盖encText
中的第一个字符。您需要解释如何尝试在decryptText
中对字符串进行编码,目前值的代码已被移动,已被移动,而*encText
的赋值没有意义。