【问题标题】:How to get string of unknown length in C? [duplicate]如何在C中获取未知长度的字符串? [复制]
【发布时间】:2019-09-02 14:24:07
【问题描述】:

我一直在尝试学习 C,并且想知道:如何在 C 中获得长度未知的字符串?我找到了一些结果,但不知道如何应用它们。

【问题讨论】:

  • 从哪里获取?
  • C 有 char 数组,你应该根据字符串的长度声明 char 数组。
  • 假设您正在询问用户输入 - 您可以在循环中逐个字符(或按长度限制的块)读取字符并动态分配/重新分配空间来存储它。
  • 您找到了哪些结果?你是如何尝试应用它们的?应用它们有什么问题?代码在哪里 - MCVE (minimal reproducible example) - 显示了您在应用您认为是最佳解决方案时遇到的问题?
  • 不知道为什么有人认为这是“不清楚你在问什么”,这对我来说似乎很清楚

标签: c string


【解决方案1】:

如果您对标准的扩展感到满意,请尝试POSIX getline()

文档示例:

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

int main(void)
{
    FILE *fp;
    char *line = NULL;
    size_t len = 0;
    ssize_t read;
    fp = fopen("/etc/motd", "r");
    if (fp == NULL)
        exit(1);
    while ((read = getline(&line, &len, fp)) != -1) {
        printf("Retrieved line of length %zu :\n", read);
        printf("%s", line);
    }
    if (ferror(fp)) {
        /* handle error */
    }
    free(line);
    fclose(fp);
    return 0;
}

【讨论】:

  • 好的,我去看看!谢谢!
猜你喜欢
  • 2017-08-05
  • 2014-11-20
  • 2015-06-08
  • 2013-01-23
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 2021-12-04
相关资源
最近更新 更多