如何读取字符串直到输入结束,并读取行直到在C中找到\ n?

问题描述 投票:0回答:1

我想在while循环中读取字符串,直到输入结束,但是我不知道如何。例如,输入为:

Car
Black car
White car

[首先,我想扫描'car'并将其保存在数组中。然后,我要扫描“黑色汽车”并将其放进去,依此类推。

 while (scanf("%[^\n]", s)>0)

这仅读取一行,但是当我使用此代码时:

 while(scanf("%s", s) > 0)

[它一个接一个地读,所以不会有'Black car',而是'black'和'car'。

您是否有想法同时满足这两个条件?

c string scanf newline
1个回答
0
投票

使用标准C函数fgets。例如

char s[N];
while ( fgets( s, sizeof( s ), stdin ) != NULL && s[0] != '\n' )
{
    //...
}

N是一些整数值。

这里是示范节目

#include <stdio.h>
#include <string.h>

int main(void) 
{
    enum { N = 100 };
    char s[N];

    while ( fgets( s, sizeof( s ), stdin ) != NULL && s[0] != '\n' )
    {
        s[ strcspn( s, "\n" ) ] = '\0';
        puts( s );
    }

    return 0;
}

如果输入

Car
Black car
White car

并且在最后输入之后再按一次Enter,则输出为

Car
Black car
White car

此声明

s[ strcspn( s, "\n" ) ] = '\0';

用于从输入的字符串中排除换行符'\n'。该字符可以通过函数fgets附加到输入的字符串中。

© www.soinside.com 2019 - 2024. All rights reserved.