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