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

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

Car
Black car
White car

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

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

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

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

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

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

而且,我在链表中​​有两个节点:第一个是“ White car”,第二个是“ Car black”。我想按字母顺序对其进行排序。我想将“白色汽车”的第一个字母“ W”放入数组1,将“汽车黑色”的第一个字母“ C”放入数组2。但是当我打印f array1时,它打印'W',但是当我想打印array2时,它写'CW'?当我打印一个->名称时,它会打印“白色汽车”;当我打印两个->名称时,它会打印“汽车黑色”。

void sort(Car**head){
Car*one;
Car*two;
Car*temp;
one= *head;
two= one->next;

int compare;
char array1[1]={0};
char array2[1]={0};

while(one->next){
    compare= 0;
    strncpy(array1,one->name,1);
    strncpy(array2,two->name,1); 

    printf("Array1: %s\n",array1);
    printf("Array2: %s\n",array2);

    printf("One name: %s\n",one->name);
    printf("Two name: %s\n",two->name);

    compare= strcmp(one->name,two->name);
    if(compare<0){
        temp = one;
        one = two;
        two= temp;
    }
    one = one->next;
    two = two->next;
}                           

}

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

使用标准的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,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将此字符附加到输入的字符串中。

本文链接:https://www.f2er.com/3050411.html

大家都在问