我如何阅读c中一行中用空格隔开的3个单词

问题描述 投票:-3回答:1

我必须一行阅读一些用户信息。以这种格式:

name id rating

name是一个包含20个字符的字符串id是介于0000到9999之间的数字(因此我们必须将其读取为字符串)评分是介于a到z之间的单个字符

例如,对于读取的3名员工输入为:

john 0000 a
sarah 0001 b
mary 0005 b

我在for循环中使用scanf,但是不起作用!

scanf("%s %s %c" ,users[i].name ,users[i].id, &users[i].rating);
c scanf
1个回答
0
投票

删除e中的scanf,它应该可以正常工作。

我尝试如下记录您的代码的近似版本:

#include <stdio.h>

struct user
{
    char name[50];
    char id[5];
    char rating;
}users[3];

int main()
{
    int i;

    for(i = 0; i < 3; i++)
    {
        scanf("%s %s %c", users[i].name, users[i].id, &users[i].rating);
    }

    for(i = 0; i < 3; i++)
    {
        printf("%s %s %c\n", users[i].name, users[i].id, users[i].rating);
    }

    return 0;
}

上面的代码运行得很好,甚至可以打印用户详细信息。

EXPLANATION

scanf中,不需要传递的第一个参数escanf中的第一个参数应为格式字符串,即您的情况下为"%s %s %c"。我不确定,但是我认为您正在尝试将fscanf样式syntax用于scanffscanf将文件指针作为第一个参数,后跟格式字符串。我希望它能消除歧义并帮助您。

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