gpt4 book ai didi

c - 如何获取带有空格的字符串输入并将其单独放入变量中?

转载 作者:行者123 更新时间:2023-11-30 17:23:03 25 4
gpt4 key购买 nike

我被这个问题困扰了,我不知道何时设置输入。示例->“LEMON TREE”,(我设置了(输入)来读取它的双倍时间函数getline),它给了我错误的输出,如“LEMON TRE E”,我解释一下,问题这就是我如何更改 getline 的代码(我的修改后的函数)并单独获取输出,这是我的函数 getline ,这是我想要的视觉效果。我使用 k&r-ansii 书中的函数(稍作修改):

int getline(char *line, int len)
{

int i,c;
for ( i =0;i<len-1 && (c = getchar()) != EOF && c!='\n';i++)
*line++ = c;

if ( c == '\n')
{
i++;
*line++ = '\n';
*line = '\0';
}

return i;
}

这就是我想要的视觉效果:

char line_1[10];
char line_2[10];
getline(line_1, 10);
getline(line_2, 10);

printf("line_1: %s ", line_1);
printf("line_2: %s", line_2);

INPUT: LEMON TREE//这是一行输入,就像你看到的那样。输出:line_1:LEMON TRE line_2:E

  1. 我的代码需要更改什么?
  2. 当我在 header 中写入 getline 时,它​​说它之前已声明,现在当我使用 ubuntu 时,但之前在 Windows 上时我声明了它,并与 lib stdio.h 混合,它工作得很好。

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

最佳答案

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

for ( i =0;i<len-1 && (c = getchar()) != EOF && c!='\n' && c!=' ';i++) {
*line++ = c;
}

/*编辑:(感谢BLUEPIXY的评论提醒我)总是使用足够大的字符串(或其他数据类型)来包含分配给它的可能的输入/值。
*/

关于函数的通用性,可以循环调用getline并使用其返回值来判断最后一个单词是否已经被读取,或者使用多维数组

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

至于第二个问题,根据http://www.cplusplus.com/reference/cstdio/ stdio.h 不包含 getline 函数

关于c - 如何获取带有空格的字符串输入并将其单独放入变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27765484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com