C 如何获得带空格的字符串输入,并将其放在单独的变量中?

C 如何获得带空格的字符串输入,并将其放在单独的变量中?,c,C,我被这个卡住了,我不知道什么时候设置输入。示例->“LEMON TREE”(在那里我设置了(输入)来读取它的双时间函数getline),它给了我错误的输出,如“LEMON TREE”,下面我将进一步解释,问题是如何更改getline(我修改过的函数)的代码并单独获得输出,这是我的函数getline,这是我想要的。 我使用k&r-ansii手册中的函数(稍加修改): 输入:LEMON TREE//这是一行输入,如您所见。 输出:第1行:柠檬树第2行:E 我需要在代码中更改什么 当我在标题中写get

我被这个卡住了,我不知道什么时候设置输入。示例->“LEMON TREE”(在那里我设置了(输入)来读取它的双时间函数
getline
),它给了我错误的输出,如“LEMON TREE”,下面我将进一步解释,问题是如何更改
getline
(我修改过的函数)的代码并单独获得输出,这是我的函数
getline
,这是我想要的。 我使用k&r-ansii手册中的函数(稍加修改):

输入:LEMON TREE//这是一行输入,如您所见。 输出:第1行:柠檬树第2行:E

  • 我需要在代码中更改什么
  • 当我在标题中写getline时,它说它以前声明过,现在当我使用ubuntu时,但在windows上之前,我声明过,并与lib stdio.h混合使用,它工作正常

  • 更新:我想更改我的函数,使其可以处理两个以上的单词(使其通用)。

    您还需要检查空格(例如空格)以确定单词的结尾

    for ( i =0;i<len-1 && (c = getchar()) != EOF && c!='\n' && c!=' ';i++) {
        *line++ = c;
    }
    
    别忘了编辑函数的返回值(我用于指定无法以任何其他方式返回的值(通常负值表示计数时出错):

    应该简单地用

    *line = '\0'; //every string needs to be finalized
    

    至于第二个问题,根据stdio.h不包含getline函数1)
    charline_1[10]-->
    字符行_1[16]
    柠檬树
    (10个字符)+NUL(1个字符)。需要大小>=112),因为GNU库(
    )(或POSIX)已经存在。使用不同的名称。为什么getline函数会显示错误消息?我只#include我设置了if(c='\n'){i++;*line++='\n'..,因为如果c==EOF,则需要设置'\n',和'\0';
    for ( i =0;i<len-1 && (c = getchar()) != EOF && c!='\n' && c!=' ';i++) {
        *line++ = c;
    }
    
    while (getline(line_1, 10)!= -1) {
        printf("line_1: %s ", line_1);
    }
    
    if ((c == EOF) ||(c == '\n')) {
        i = -1;
    }
    
    if ( c == '\n')
       {
         i++;
         *line++ = '\n';
         *line = '\0';
                   }
    
    *line = '\0'; //every string needs to be finalized