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
的赋值没有意义。