C 将“诅咒”窗口中的行读入单独的字符串

C 将“诅咒”窗口中的行读入单独的字符串,c,arrays,pdcurses,C,Arrays,Pdcurses,我试图读取一个包含一些加密内容的文件…加密是,除“\n”和“-”之外的每个字符都从中减去4,然后用150进行异或运算…从文件中读取加密字符后,我将它们放入字符串中并进行一些处理(编辑)使用curses库。然后我再次加密字符串并将其放回文件中。但是加密不起作用 我将解密文件的所有内容放入一个字符串中。然后根据字符将字符串分成\n个部分,并将其存储到单独的行列式数组(2d)中,这些行列式数组表示curses窗口中的连续行。然后尝试实现一些游标控件来编辑行,并将新编辑的行存储到行列式数组(2d)中然后

我试图读取一个包含一些加密内容的文件…加密是,除“\n”和“-”之外的每个字符都从中减去4,然后用150进行异或运算…从文件中读取加密字符后,我将它们放入字符串中并进行一些处理(编辑)使用curses库。然后我再次加密字符串并将其放回文件中。但是加密不起作用

我将解密文件的所有内容放入一个字符串中。然后根据字符将字符串分成\n个部分,并将其存储到单独的行列式数组(2d)中,这些行列式数组表示curses窗口中的连续行。然后尝试实现一些游标控件来编辑行,并将新编辑的行存储到行列式数组(2d)中然后我把它们放回一个临时文件。然后,我尝试加密字符,最后把它们放回原始文件

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

int main()
{
    FILE *fp1;
if((fp1=fopen("demo.txt","rb"))==NULL)
{
    printf("\n\n\t\t\t\t     Could not open file! Press any key to return\n");
    _getch();
    return;
}
fclose(fp1);
int xrow,xcol,row,col,i=0,j,k=0,L=0,ch1,x;
char a[1405],ab[100][1405],c;
fp1=fopen("demo.txt" , "rb")
while(1)
{
    c=fgetc(fp1);
    a[i]=c;
    i++;
    if(feof(fp1))
        break;
}
fclose(fp1);
a[i]='\0';
i=0;
initscr();
getmaxyx(stdscr,xrow,xcol);
for(j=0;j<=strlen(a);j++,k++)
{
    if(a[j]=='\n')
    {
        ab[i][k]='\0';
        k=-1;
        i++;
        continue;
    }
    ab[i][k]=a[j];
}
cbreak();
keypad(stdscr,TRUE);
for(k=0;k<=i;k++)
{
    mvaddnstr(k,0,ab[k],-1);
    refresh();
}
echo();
l=0;
while(1)
{
    noecho();
    ch1=getch();
    getyx(stdscr,row,col);
    switch(ch1)
    {
    case KEY_LEFT:
        refresh();
        if((col-1)<0)
        {
            beep();
        }
        else
        {
            col--;
        }
        wmove(stdscr,row,col);
        refresh();
        break;

    case KEY_RIGHT:
        if((col+1)>119)
        {
            beep();
        }
        else
        {
            col++;
        }
        wmove(stdscr,row,col);
        refresh();
        break;

    case KEY_UP:
        if((row-1)<0)
        {
            beep();
        }
        else
        {
            row--;
        }
        wmove(stdscr,row,col);
        refresh();
        break;

    case KEY_DOWN:
        if((row+1)>29)
        {
            beep();
        }
        else
        {
            row++;
        }
        wmove(stdscr,row,col);
        refresh();
        break;

    case 8:
        delch();
        refresh();
        break;


    case 10:
        for(k=0;k<=i;k++)
        {
            x=strlen(ab[k]);
            mvinnstr(k,0,ab[k],x);
        }
        L=1;
        break;

    default:
        addch(ch1);
        refresh();
        break;
    }
    if(l!=0)
    {
        break;
    }
}
clear();
refresh();
endwin();
system("cls");
for(k=0;k<=i;k++)
{
    printf("%s\n",ab[k]);
}
getch();
k=0;
L=0;
if((fp1=fopen("demo.txt","wb+"))!=NULL)
{
    while(1)
    {
        if(k>i)
        {
            break;
        }
        if(ab[k][l]=='\0')
        {
            c='\n';
            l=0;
            k++;
            fputc(c,fp1);
        }
        else
        {
            c=ab[k][l];
            l++;
            fputc(c,fp1);
        }
    }
}
fclose(fp1);
}
#包括
#包括
#包括
#包括
int main()
{
文件*fp1;
if((fp1=fopen(“demo.txt”,“rb”))==NULL)
{
printf(“\n\n\t\t\t\t无法打开文件!按任意键返回\n”);
_getch();
返回;
}
fclose(fp1);
int xrow,xcol,row,col,i=0,j,k=0,L=0,ch1,x;
字符a[1405],ab[100][1405],c;
fp1=fopen(“demo.txt”、“rb”)
而(1)
{
c=fgetc(fp1);
a[i]=c;
i++;
if(feof(fp1))
打破
}
fclose(fp1);
a[i]='\0';
i=0;
initscr();
getmaxyx(stdscr、xrow、xcol);

对于(j=0;jt)在这个问题中没有理由混合使用解密和诅咒。制作单独的程序,一个带有解密和正常输出,一个带有诅咒但没有解密,然后看看其中哪一个有问题。然后问一下这个问题。我删除了加密,但问题仍然存在。因此:(如前所述,程序无法编译。修复了该问题后,我无法重现该问题。