我想在while循环中读取字符串,直到输入结束,但是我不知道如何。例如,输入为:
Car
Black car
White car
首先,我要扫描'car'并将其保存在数组中。然后,我想扫描“ Black car”并将其放进去,依此类推。
while (scanf("%[^\n]", s)>0)
这仅读取一行,但是当我使用此代码时:
while(scanf("%s", s) > 0)
它一个接一个地读,所以不会有“ Black car”,而是“ black”和“ car”。
您是否有想法同时满足这两个条件?
而且,我在链接列表中有两个节点:第一个是“ White car”,第二个是“ Car black”。我想按字母顺序对其进行排序。我想将'White car'的第一个字母'W'放入array1,并将'Car black'的第一个字母C'放入数组2。但是当我打印f array1时,它打印'W',但是当我想打印array2时,它写'CW'?当我打印一个->名称时,它会打印'White Car';当我打印两个->名称时,它会打印'Car black'。
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;
}
}
使用标准的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
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句