visual studio-C语言结构体在VS2013输入时候遇到的问题

问题描述

C语言结构体在VS2013输入时候遇到的问题

IDE:VS2013
OS:Windows7
源码附上:

#include<windows.h>
#include<stdio.h>
int main()
{
    //定义一个People类型的结构体
    struct People{
        char name[10];//名字
        char sex[5];//性别
        int age;//年龄
        int Class;//班级
    }me;
    //将me声明为People类型的结构体变量

    printf("Please Input Your Namen");
    scanf_s("%s", &me.name);
    printf("Please Input Your sexn");
    scanf_s("%s", &me.sex);
    printf("Please Input Your agen");
    scanf_s("%d", &me.age);
    printf("Please Input Your Classn");
    scanf_s("%d", &me.Class);

    printf("%s", me.name);
    printf("%s", me.sex);
    printf("%d", me.age);
    printf("%d", me.Class);

    system("pause");
    return 0;
}

问题概述
输入名字后 程序直接没了 然后直接打印出后面的三句话了 按程序来说 应该是打印一句话 然后停下来让我输入的啊 怎么我输入一个 下面三句话都打印出来了

运行结果:

改了下程序 把scanf_s _s去掉后 在Devc++中就可以正常使用

在Devc++中的运行结果

请问各位C前辈 是不是因为VS2013中 对键盘缓冲区进行了特殊的处理呢?

解决方案

scanf_s对于%c和%s格式需要指定数组元素或变量的个数

    scanf_s("%s", &me.name,10);
    printf("Please Input Your sexn");
    scanf_s("%s", &me.sex,5);
    printf("Please Input Your agen");
    scanf_s("%d", &me.age);
    printf("Please Input Your Classn");
    scanf_s("%d", &me.Class);

解决方案二:

结构体可以当做是一种新的类型,所以字符串的输入与以数组形式输入字符串一样,不需要加引用符&

解决方案三:

在c语言中,数组的的第一个元素就是数组的地址,所以不需要加&

解决方案四:

在每一个scanf_s函数后面加一个getchar();试试,我也遇到类似的问题就是用这方法解决的

时间: 2024-11-02 10:09:53

visual studio-C语言结构体在VS2013输入时候遇到的问题的相关文章

c语言-C语言结构体数组在头文件里赋值的问题

问题描述 C语言结构体数组在头文件里赋值的问题 上面的赋值是写在一个头文件里的,用VS2008,或者VC++6.0调都会出现上面的错误,VS2013和DEV就不会报错. 完整代码是: //头文件"信息.h" struct students { long code; char *name; float score[3]; float sum; }; void default_initiate(struct students stu[ ]) { stu[0] = { 20140001, &

struct-关于C语言结构体指针数组的问题

问题描述 关于C语言结构体指针数组的问题 //结构体struct student{ int iNum; char cName[16]; float fChineseScore; float fMathScore; float fEnglishScore;};typedef struct student STUDENT;//输入void InputTranscript(STUDENT MyClass[] int num){ int i; printf(""请输入学生的成绩信息:n&quo

c语言-C语言结构体的指针问题。

问题描述 C语言结构体的指针问题. struct GenInfo { uint64_t (*next)(struct GenInfo * const); enum GeneratorType type; union { struct GenInfo_Constant constant; struct GenInfo_Counter counter; struct GenInfo_Discrete discrete; struct GenInfo_Exponential exponential;

struct-C语言结构体变量指针问题,求助

问题描述 C语言结构体变量指针问题,求助 #include #include #include #define N 10 typedef struct { char name[10]; double price; struct { int year;int month;int day ;}date; }STREC; int fun(STREC a,double p) { int i,j=0; double q; for(i=0; i < N ; i++,a++) { q=a->price; i

Go语言结构体定义和使用方法_Golang

本文实例讲述了Go语言结构体定义和使用方法.分享给大家供大家参考.具体分析如下: 一个结构体(struct)就是一个字段的集合. (而 type 定义跟其字面意思相符.) 复制代码 代码如下: package main import "fmt" type Vertex struct {     X int     Y int } func main() {     fmt.Println(Vertex{1, 2}) } 结构体字段使用点号来访问. 复制代码 代码如下: package

strcpy-C语言结构体之间的复制

问题描述 C语言结构体之间的复制 怎么实现C语言中一维结构体与二维结构之间的复制,比如我现在有两个结构体,都是XML_DATA类型的,其中一个是m_data[10],另外一个是m_sava[10][10],为什么执行strcpy(m_save[k++],m_data);语句不能把m_data中的所有内容复制给m_save了?求大神指点呀,谢谢! 解决方案 最简单的是memcpy函数 解决方案二: C语言中结构体变量复制的例子C语言之结构体c语言中的结构体 解决方案三: strycpy是用来在字符

c语言-关于C语言结构体指针类型的强制转换(求大神详细解答)

问题描述 关于C语言结构体指针类型的强制转换(求大神详细解答) #include <iostream> #include <algorithm> using namespace std; typedef struct { string dna; int count; }DNA; DNA dna[101]; **int cmp(const void *a,const void *b) { DNA *aa = (DNA *)a; DNA *bb = (DNA *)b; return a

对嵌入式开发C语言结构体的一点总结

今天冬至居然不上班,公司的良心啊!这回有心情写博客和日志了,好了,废话不多说.直接看下文: 鉴于嵌入式开发过程中,C语言结构体的使用当然是必不可少.话说,基础什么的比你会更牛逼的算法更重要,基础不牢,地动山摇!!最本质的东西就是基础,不要学到越高级的东西却忘了最本质的东西,这样就失去了学习的意义. 接下来我将对结构体最基础的东西,如何初始化,如果打印信息做一个最基础的总结,当然结构体在内核中到处可见,随便一个可能都是你不认识的东西,归根到底,还是基础: 好了,直接上代码,我们对这个程序进行分析.

编程c语言-关于c语言结构体指针的问题

问题描述 关于c语言结构体指针的问题 结构体指针只包含了结构体的首地址还是包含了所有成员的地址?还有结构体的首地址是什么,比如第一个成员是一个数组,那么首地址是不是就是这个数组的首地址? 解决方案 结构体指针既是结构体首成员的地址,也是结构体的首地址.你说的是对的. 好比数组指针既是数组的首地址,也是数组第一个元素的首地址. 解决方案二: 指针也可以指向一个结构体变量.定义的一般形式为: struct 结构体名 *变量名; 前面已经定义了一个结构体 stu: struct stu{ char *