C 获取行中的每个字符,然后对其进行加密

C 获取行中的每个字符,然后对其进行加密,c,encryption,C,Encryption,为什么它不将函数copy()中的每一行从a文件正确复制到b文件 问题出在encr()方法中 #include <stdio.h> #include <stdlib.h> #include <string.h> int copy(FILE *afile, FILE *bfile){ char line[100]; while(fgets(line, 100, line) != NULL){ fprintf(bfile, "%

为什么它不将函数
copy()
中的每一行从
a文件
正确复制到
b文件

问题出在
encr()
方法中

#include <stdio.h>
#include <stdlib.h>
#include <string.h>


int copy(FILE *afile, FILE *bfile){
    char line[100];
    while(fgets(line, 100, line) != NULL){
         fprintf(bfile, "%s\n", line);
    }
    return 1;
}

int main(int argc, char *argv[])
{
        FILE *afile;
        FILE *bfile;


        input = fopen(argv[1], "r");
        output = fopen(argv[2], "w");
        copy(input, output);
        fclose(output);
    }
    return 0;
}
#包括
#包括
#包括
int复制(文件*afile,文件*bfile){
字符行[100];
while(fgets(行,100,行)!=NULL){
fprintf(b文件,“%s\n”,行);
}
返回1;
}
int main(int argc,char*argv[])
{
文件*afile;
文件*b文件;
输入=fopen(argv[1],“r”);
输出=fopen(argv[2],“w”);
复制(输入、输出);
fclose(输出);
}
返回0;
}

您需要解析for循环中的行,类似于:

while(fgets(line, sizeof(line), input) != NULL){
    for (index = 0; line[index] != 0; index++) {
        p = line[index];
        ...
        ...
        fputc(c, output);
        //index++; remove this line
    }
}

你需要像as
那样的循环(index=0;(p=line[index])!='\0';index++){…}
@BLUEPIXY,它在Windows中加密,但是你知道为什么它在Linux中加密成一堆奇怪的字符吗?结果不一样?我不知道。@BLUEPIXY,是的,它在Windows上给出了正确的输出,但在Unix上它是一堆字符:(如果我用“\0”而不是0怎么办?有什么区别@Ritesh@Kemal当你说“A”时,它实际上是65。当你说“\0”时,它实际上是0。