c - 使用 scanf 连续读取字符串和 int 时遇到问题

标签 c string struct int scanf

我必须读取 3 个由空格分隔的字符串和 2 个由空格分隔的整数,并将它们保存到结构中

  #define n 5;
    struct person
    {
        char last_name[20];
        char sec_last_name[20];
        char name[20];
        int num;
        int kw;
    }client[n];

我尝试这样阅读

for(i=0;i<n;i++)
{    
    scanf("%s %s %s %d %d",client[i].last_name,client[i].sec_last_name,client[i].name,client[i].num,client[i].kw);
}

因为我必须连续读取它,但是当我运行程序时,它在输入第一行数据并按 Enter 键后停止,在使用我的代码后,问题与读取整数有关,但我似乎无法解决它。

最佳答案

scanf 语句有语法错误。在您的情况下,应在整数之前使用 &

 scanf("%s %s %s %d %d",client[i].last_name,client[i].sec_last_name,client[i].name,&client[i].num,&client[i].kw);

还有一件事是,

#define n 5 /*;*/
不应使用

;

示例:

如果使用;,则将替换client[5;];在结构体变量声明中。然后就会报编译错误。

关于c - 使用 scanf 连续读取字符串和 int 时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26621040/

相关文章:

javascript - 有没有一种方法可以缩短字符串唯一 ID 数组,同时仍确保唯一性?

c++ - boost::interprocess : cout a string variable when iterating through a map that references an object from a struct

c++ - C:将指针数组作为参数传递给结构体

c - 更新函数内的字符串数组

swift - 从文本文件中读取和写入字符串

c - 在 C 中将整数转换为 double 会产生零值

你能改变 if 语句中 char 的值吗?

c++ - 使用 memcpy 初始化位填充结构

c - 如何将数学表达式转换为C语句?

C open() sycall 对于可变路径参数返回 -1