C程序跳过字符串中的第一个字符

C程序跳过字符串中的第一个字符,c,struct,printf,scanf,C,Struct,Printf,Scanf,除了跳过字符串名称中的第一个字符外,工作正常。谁能解释一下我没看到什么 #include "stdio.h" /* *BN */ int main(void) { // Disable stdout buffering //setvbuf(stdout, NULL, _IONBF, 0); struct data { char name[40]; char street[50]; char city[30]; char state[3]; char zip[6]; fl

除了跳过字符串名称中的第一个字符外,工作正常。谁能解释一下我没看到什么

#include "stdio.h"
/*
*BN
*/
int main(void) {
// Disable stdout buffering
//setvbuf(stdout, NULL, _IONBF, 0);

struct data {
  char name[40];
  char street[50];
  char city[30];
  char state[3];
  char zip[6];
  float salary;
};

struct data p = {
scanf("%s %s %s %s %s %f", &p.name, &p.street, &p.city, &p.state, &p.zip, &p.salary)
};

printf(" Name:%s\n Street:%s\n City:%s\n State:%s\n Zipcode:%s\n Salary:%.2f", p.name, p.street, p.city, p.state, p.zip, p.salary);
return 0;
}

将结构初始化为struct data p;然后你做扫描


您好,您在初始化结构时出错了

使用以下命令:

#include "stdio.h"
/*
*BN
*/
int main(void) {
    // Disable stdout buffering
    //setvbuf(stdout, NULL, _IONBF, 0);

    struct data {
      char name[40];
      char street[50];
      char city[30];
      char state[3];
      char zip[6];
      float salary;
    };

    struct data p;//Dont Initialize it here!
    printf("Please Enter Name Street City State Zip Salary:");
    scanf("%s %s %s %s %s %f", &p.name, &p.street, &p.city, &p.state, &p.zip, &p.salary);

    printf(" Name:%s\n Street:%s\n City:%s\n State:%s\n Zipcode:%s\n Salary:%.2f\n", p.name, p.street, p.city, p.state, p.zip, p.salary);
    return 0;
}

因为这不是初始化结构的方式,请密切注意它返回的内容。结构初始化不正确。检查:我同意这不是在c中初始化结构的方式。但是,有人能解释一下为什么除了第一个字符外,结构被正确初始化了吗?如果你想知道会发生什么,那就是scanf函数写入结构的所有成员,然后结构实际上由scanf返回的值初始化。谢谢!,我将检查结构的正确初始化并进一步了解scanf。谢谢大家!
#include "stdio.h"
/*
*BN
*/
int main(void) {
    // Disable stdout buffering
    //setvbuf(stdout, NULL, _IONBF, 0);

    struct data {
      char name[40];
      char street[50];
      char city[30];
      char state[3];
      char zip[6];
      float salary;
    };

    struct data p;//Dont Initialize it here!
    printf("Please Enter Name Street City State Zip Salary:");
    scanf("%s %s %s %s %s %f", &p.name, &p.street, &p.city, &p.state, &p.zip, &p.salary);

    printf(" Name:%s\n Street:%s\n City:%s\n State:%s\n Zipcode:%s\n Salary:%.2f\n", p.name, p.street, p.city, p.state, p.zip, p.salary);
    return 0;
}