首页 > 解决方案 > void函数:将垃圾从数组变量返回到C中的main

问题描述

我需要一些帮助

我希望我的 void 函数显示正确的输出而不是垃圾,我仍然是当前程序的一半。我想知道是否

void expand(char r[7], char *eR){

    //  static char temp[10];
        *(eR+0) = r[0];
        *(eR+1) = r[1];
        *(eR+2) = r[3];
        *(eR+3) = r[2];
        *(eR+4) = r[3];
        *(eR+5) = r[2];
        *(eR+6) = r[4];
        *(eR+7) = r[5];
        *(eR+8) = '\0';

        printf("Expanded: %s",eR);

    }

int main(){
    char bitMessage[13],key[10],l[7],r[7],xResult,eR[9];
    char *temp=eR;
    int i;
    char *fResult;
    printf("Enter Message:");
    scanf("%s",&bitMessage);
    printf("Enter Key:");
    scanf("%s",&key);

    printf("Message is %s \n",bitMessage);
    printf("Key is %s \n",key);
    printf("\n\n");
    printf("LEFT:");
    for(i=0;i<6;i++){
        printf("%c",bitMessage[i]);
    }
    printf("\n");
    printf("RIGHT:");
    for(i=6;i<12;i++){
        printf("%c",bitMessage[i]);
    }
    printf("\n");
    printf("Key:");
    for(i=0;i<10-1;i++){
        printf("%c",key[i]);
    }
    printf("\n\n");
    expand(r,eR);


    return 0;
}

在此处输入图像描述

请帮我解决这个问题,我还是编程新手

标签: c

解决方案


您需要初始化rl。我你想要这个:

printf("LEFT:");
// Copy chars bitMessage 0-5 to l 0-5
for(i = 0; i < 6; i++){
    l[i] = bitMessage[i];
    printf("%c", l[i]);
}
printf("\n");
printf("RIGHT:");
// Copy chars bitMessage 6-11 to r 0-5
for(i = 6; i < 12; i++){
    r[i - 6] = bitMessage[i];
    printf("%c", r[i - 6]);
}

推荐阅读