在C语言中打印长度超过80个字符的行

在C语言中打印长度超过80个字符的行,c,C,我不知道为什么这样不行。我正在尝试打印超过80个字符的行(来自输入)。但我根本没有得到正确的字符。我不确定我做错了什么。有人知道吗 注意:我不想让你给我写一个完整的新程序来完成这个功能(打印超过80行)。我只想知道我的程序错误的一面。更正 注意:最后一行覆盖前面的行 #include <stdio.h> #define MAXARRAYSIZE 500 char c; int i = 0; int j = 0; int jCopy = 0; char line[MAXARRAYSI

我不知道为什么这样不行。我正在尝试打印超过80个字符的行(来自输入)。但我根本没有得到正确的字符。我不确定我做错了什么。有人知道吗

注意:我不想让你给我写一个完整的新程序来完成这个功能(打印超过80行)。我只想知道我的程序错误的一面。更正

注意:最后一行覆盖前面的行

#include <stdio.h>
#define MAXARRAYSIZE 500

char c;
int i = 0;
int j = 0;
int jCopy = 0;
char line[MAXARRAYSIZE];
char linesToPrint[MAXARRAYSIZE][MAXARRAYSIZE];

void emptyArray(char theArray[]);

void InsertArrayIntoArray(char to[MAXARRAYSIZE][MAXARRAYSIZE], char from[], int toIndex, int lengthSoFar);

void printArray(char theArray[MAXARRAYSIZE][MAXARRAYSIZE], int lengthSoFarX);

int main(void) {
    while ((c = getchar()) != EOF) {
        if (i > MAXARRAYSIZE) {
            i = 0;
        }
        if (j > MAXARRAYSIZE) {
            j = 0;
        }
        if (c != '\n') {
            line[i] = c;
            i++;
            //printf("%d",i);
        } else {
            printf("\n j:%d \n i:%d", j, i);
            j++;
            jCopy = j;
            if (i >= 10) {
                InsertArrayIntoArray(linesToPrint, line, j, i);
                //printArray(linesToPrint, j, i);
            }
            emptyArray(line);
            i = 0;
        }
    }
    printArray(linesToPrint, jCopy);
}

void emptyArray(char theArray[]) {
    int i;
    for (i = 0; i < sizeof(theArray) / sizeof(theArray[0]); i++) {
        theArray[i] = 0;
    }
}

void InsertArrayIntoArray(char to[MAXARRAYSIZE][MAXARRAYSIZE], char which[], int toSize, int whichSize) {
    int i, j;
    //printf("\n To size: %d \t Which Size: %d",toSize,whichSize);
    for (i = 0; i < toSize; i++) {
        for (j = 0; j < whichSize; j++) {
            to[i][j] = which[j];
        }
    }
}

void printArray(char theArray[MAXARRAYSIZE][MAXARRAYSIZE], int lengthSoFarX) {
    int i, j;
    for (i = 0; i < lengthSoFarX; i++) {
        printf("\n Line %d :", i + 1);
        printf(" %s\n", theArray[i]);
    }
}
#包括
#定义MAXARRAYSIZE 500
字符c;
int i=0;
int j=0;
int jCopy=0;
字符行[MAXARRAYSIZE];
char linesToPrint[MAXARRAYSIZE][MAXARRAYSIZE];
空数组无效(字符数组[]);
void InsertArrayIntoArray(char到[MAXARRAYSIZE][MAXARRAYSIZE],char从[],int到index,int-lengthSoFar);
void printary(字符数组[MAXARRAYSIZE][MAXARRAYSIZE],int length sofarx);
内部主(空){
而((c=getchar())!=EOF){
如果(i>MAXARRAYSIZE){
i=0;
}
如果(j>MAXARRAYSIZE){
j=0;
}
如果(c!='\n'){
第[i]=c行;
i++;
//printf(“%d”,i);
}否则{
printf(“\n j:%d\n i:%d”,j,i);
j++;
jCopy=j;
如果(i>=10){
InsertArrayIntoArray(linesToPrint,line,j,i);
//打印阵列(linesToPrint,j,i);
}
空射线(线);
i=0;
}
}
打印阵列(linesToPrint,jCopy);
}
空数组无效(字符数组[]){
int i;
对于(i=0;i
首先,无法获取(数组)的大小,因为数组是Joachim Pileborg指出的指针。第二个错误是InsertArrayIntoArray函数。 应该是这样的:

void InsertArrayIntoArray(char to[MAXARRAYSIZE][MAXARRAYSIZE], char which[], int toSize, int whichSize) {
    int i, j;
    //printf("\n To size: %d \t Which Size: %d", toSize, whichSize);
    for (j = 0; j < whichSize; j++) {
        to[toSize][j] = which[j];
    }
}
void InsertArrayIntoArray(char to[MAXARRAYSIZE][MAXARRAYSIZE],char which[],int toSize,int whichSize){
int i,j;
//printf(“\n到大小:%d\t哪个大小:%d”,toSize,whichSize);
对于(j=0;j
将代码分解为需要帮助的最简单部分。对于初学者来说,char c=getchar()
getchar()
返回一个
int
,您应该尊重这一点。小心,返回一个
int
。这实际上非常重要。复制字符时,在
InsertArrayIntoArray
处缺少字符串null终止符。还有其他问题,如
sizeof(theArray)/sizeof(theArray[0])
函数中的“技巧”。这将不起作用,因为
theArray
是一个指针,因此
sizeof(theArray)
将给出指针的大小,而不是它指向的对象。