Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 打印存储行的字符数组时获取乱码值>;长度20_Arrays_C - Fatal编程技术网

Arrays 打印存储行的字符数组时获取乱码值>;长度20

Arrays 打印存储行的字符数组时获取乱码值>;长度20,arrays,c,Arrays,C,我最近开始用C语言编写代码,我想问一个C编程书上的问题。问题是打印所有长度超过指定长度的行 我所做的是一行接一行,如果len>20,我会在longest[]的末尾追加一行,以得到一个最终数组,该数组将存储所有行并逐个打印这些行。这就是我迄今为止所实现的--> 任何帮助都将不胜感激,谢谢!:) 您是否尝试过在调试器中逐行运行代码,同时监视所有变量的值,以确定程序在哪一点停止按预期运行?如果您没有尝试过,那么您可能想阅读以下内容:您可能还想阅读以下内容:。不,我没有,我将立即进行调查。谢谢最长[i]

我最近开始用C语言编写代码,我想问一个C编程书上的问题。问题是打印所有长度超过指定长度的行

我所做的是一行接一行,如果len>20,我会在longest[]的末尾追加一行,以得到一个最终数组,该数组将存储所有行并逐个打印这些行。这就是我迄今为止所实现的-->


任何帮助都将不胜感激,谢谢!:)

您是否尝试过在调试器中逐行运行代码,同时监视所有变量的值,以确定程序在哪一点停止按预期运行?如果您没有尝试过,那么您可能想阅读以下内容:您可能还想阅读以下内容:。不,我没有,我将立即进行调查。谢谢<代码>最长[i]=行[k]!='\0'需要一些
函数
copy()
你有
而(最长的[i]!='\0'…
你最初是什么时候将它设置为
'\0'
的?
字符最长的[LIMIT]
未初始化。
字符最长的[LIMIT];
所有未使用的数组元素都设置为
0
#include <stdio.h>

#define LIMIT 2000
#define MAX 500

int getLine(char line[], int limit);
void copy(char line[], char longest[]);

int main()
{
    //Print lines>20 characters among other lines.
    int len,final=0;
    char line[MAX], longest[LIMIT];
    while((len=getLine(line,MAX)) > 0)
    {
        if(len>20)
        {
            copy(line,longest);
        }
    }
    while(longest[final] != '\0')
    {
        printf("%c",longest[final])
        ++final;
    }
    return 0;
}

int getLine(char line[], int limit)
{
    int ch, i=0;
    while(i<limit-1 && (ch=getchar())!=EOF && ch!='\n')
    {
        line[i]=ch;
        ++i;
    }
    if(ch=='\n')
    {
        line[i]=ch;
        ++i;
    }
    line[i]='\0';
    return i;
}

void copy(char line[], char longest[])
{
    int i=0;
    while(longest[i] != '\0' && i<LIMIT-1)
        ++i;

    int k=0;
    while(longest[i]=line[k] != '\0' && i<LIMIT-1)
    {
        ++i;
        ++k;
    }
    longest[i]='\0';
}

LINES > 20 : M�[����ý