如何编写一个不断读取一组行并标记行长度的C函数

用户127

我正在尝试 K&R 中的一个练习,它要求编写一个程序来读取一组文本行并打印最长的行。

我是按照这样的思路写的;

define a string of characters
write a function that marks the length of line until there's a newline
when encountered newline, the function again repeats
keep copying length to a variable if the length of newline is greater
copy the string (if of greater length) to another string
print the last copied string

我尝试编写函数 this mark the length 这肯定是错误的

int getlength(char str[],int lim)
{
    int length ,c;
    c = getchar();
    while((c=getchar())!= '\n')
    {
        for (length=0; length < lim -1; length++)
            c = str[length];
    }
    return length;
}

谁能建议我如何编写 getlength 函数。我不是要代码,而是要伪代码会很有帮助。

匿名的

以下是我认为您在阅读帖子和评论时正在寻找的内容:

int getlength(char str[],int lim)
{
    int length = 0;
    int c;
    while((c=getchar())!= '\n') //Get a character. If it's a newline, quit. Otherwise, keep going.
    {
        str[length] = c; //Add it to the string
        length++; //Move to the next character
    }
    str[length] = '\0'; //Add the terminating null to the end of the string
    return length;
}

此函数将在stdin上找到您给它的第一行的长度。

这就是您的原始功能不起作用的原因:

你有过:

int getlength(char str[],int lim)
{
    int length ,c;
    c = getchar();
    while((c=getchar())!= '\n')
    {
        for (length=0; length < lim -1; length++)
            c = str[length];
    }
    return length;
}

首先,您读取的字符c = getchar();永远不会被处理,因为 while 语句在检查其条件时会覆盖它。请记住,while 循环将在每个循环开始时检查条件。我认为您想使用do {...} while(condition);,但是如果您这样做,您会遇到错误,因为如果用户不输入任何内容,第一个 getchar() 调用将返回 '\n' 并且循环无论如何都会运行并将其添加到字符串中。

其次,内部循环遍历传递给它的字符串中的每个字符,并将其设置为最近读取的字符。我用 100 个字符的字符串尝试了你的代码并输入了“abcdef”。我得到了 99 个 f - 它遍历“abcdef”中的每个字符并将整个字符串设置为当前字符,并且由于 'f' 是最后一个字符,所以它被放在最后。

第三,您没有在字符串末尾添加终止 null。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

编写一个valueStock函数,该函数将一组产品作为参数

如何编写一个递归函数来计算求和一组数字中值的方式?

我将如何编写一个使用尾调用优化(TCO)对一组数字求和的递归函数?

如何在 c 中编写一个函数 char* 来返回按长度排序的单词?

如何在C#中构建一个函数,该函数返回一组定界的字符串号?

如何编写一个大函数来对行是动态的动态数组中的读取进行排序?

如何读取一组.csv文件,每个文件仅保留一个指定列

带一个或一组对象的Typescript函数

给一组行一个数值并为每个下一组增加

如何用 C 编写一个程序来读取文件中的广告打印特定行?

编写一个从stdin读取并打印到stdout的ac程序,没有内置的行长限制

如何正确地将一组不断变化的文件从一个NAS迁移到另一个NAS?

如何在不使用编码的情况下仅为一组绘制一个标记

如何编写一个采用int或float的C函数?

按一个对象属性的长度对一组对象进行排序

如何编写一个接受长度小于3的Vect的Idris函数

查询以标记一个值是否介于一组值之间

如何编写一个接受一个数字并返回一个三元组列表的函数“三元组”?

如何测试一个值是否与一组值中的一个匹配?

如何在一行中编写长度函数?

如何编写一个遍历大熊猫数据框组并应用分层条件的函数?

如何构造一个 .find() 函数,该函数采用一组值并返回一个键对象:值

如何定义一个将字母数组分解为一组字符串的函数

如何在一个组中应用一个函数,该函数取决于该组中哪一行保存一个值?

从文件中读取一组点并制作一个.OFF文件

我如何编写一个读取MongoDB数据库的Maven Java Azure函数?

如何将一个字节分成 2 个一组,然后使用 C 旋转它们?

不断移动一组图片框 C#

如何查找至少包含一组单词中的一个作为前缀的所有行