简体   繁体   English

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

[英]C program skips first char in string

Works fine except skips first character in string name. 除跳过字符串名称中的第一个字符外,其他方法均正常运行。 Can anyone explain what I am not seeing? 谁能解释我没看到的东西?

#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;
}

Initialize your structure as struct data p; 将您的结构初始化为struct data p; then you do the scanf . 然后执行scanf

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

You can check some struct stuff here. 您可以在此处检查一些struct东西。

Hi you have gone wrong way to initialize your structure 嗨,您使用错误的方法初始化了结构

Use this: 用这个:

#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;
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM