C fgets无法读取正确的用户输入
在给定的代码中-当为读写能力键入值时C fgets无法读取正确的用户输入,c,fgets,C,Fgets,在给定的代码中-当为读写能力键入值时fgets工作正常,但当我们使用printf进行给定输出时,它不会给出预期的输出(空白空间输出) 在这个问题上有人能帮我吗 顺便说一句,我正在使用Visual Studio 2015调试我的代码 #include <stdio.h> #include <stdlib.h> #include <process.h> //GLOBAL-VARIABLE DECLARTION #define MAX 1000 //GLOBAL
fgets
工作正常,但当我们使用printf进行给定输出时,它不会给出预期的输出(空白空间输出)
在这个问题上有人能帮我吗
顺便说一句,我正在使用Visual Studio 2015调试我的代码
#include <stdio.h>
#include <stdlib.h>
#include <process.h>
//GLOBAL-VARIABLE DECLARTION
#define MAX 1000
//GLOBAL-STRUCTURES DECLARATION
struct census {
char city[MAX];
long int p;
float l;
};
//GLOBAL-STRUCTURE-VARIABLE DECLARATION
struct census cen[MAX] = { 0 };
//USER-DEFINED FUNCTION
void header();
void header() {
printf("*-*-*-*-*CENSUS_INFO*-*-*-*-*");
printf("\n\n");
}
//PROGRAM STARTS HERE
main() {
//VARIABLE-DECLARATION
int i = 0, j = 0;
char line[MAX] = { 0 };
//int no_of_records = 0;
//FUNCTION CALL-OUT
header();
printf("Enter No. of City : ");
fgets(line, sizeof(line), stdin);
sscanf_s(line, "%d", &j);
printf("\n\n");
printf("Enter Name of City, Population and Literacy level");
printf("\n\n");
for (i = 0; i <= j - 1; i++) {
printf("City No. %d - Info :", i + 1);
printf("\n\n");
printf("City Name :");
fgets(cen[i].city, MAX, stdin);
printf("\n");
printf("Population : ");
fgets(line, sizeof(line), stdin);
sscanf_s(line, "%d", &cen[i].p);
printf("\n");
printf("Literacy : ");
fgets(line, sizeof(line), stdin);
sscanf_s(line, "%d", &cen[i].l);
printf("Literacy : %f", cen[i].l);
printf("\n");
printf("_____________________________________");
printf("\n\n");
}
printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* ");
printf("Census Information");
printf(" *-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
printf("\n\n");
for (i = 0; i <= j - 1; i++) {
printf("City No. %d - Info :", i + 1);
printf("\n\n");
printf("City Name : %s", cen[i].city);
printf("\n");
printf("Population : %d",cen[i].p);
printf("\n");
printf("Literacy : %f", cen[i].l);
printf("\n");
printf("_____________________________________");
printf("\n\n");
}
//TERMINAL-PAUSE
system("pause");
}
#包括
#包括
#包括
//全局变量申报
#定义最大1000
//全球结构宣言
结构普查{
查尔城[MAX];
长INTP;
浮子l;
};
//全局结构变量声明
结构普查中心[MAX]={0};
//用户定义函数
空标题();
空标题(){
printf(“*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*”);
printf(“\n\n”);
}
//节目从这里开始
main(){
//变量声明
int i=0,j=0;
字符行[MAX]={0};
//int no_of_记录=0;
//函数调用
标题();
printf(“输入城市编号:”);
fgets(生产线、尺寸(生产线)、标准DIN);
sscanf_s(第%d行和第j行);
printf(“\n\n”);
printf(“输入城市名称、人口和识字水平”);
printf(“\n\n”);
对于(i=0;i您的scanf有一个%d
,它应该是%f
。请尝试如下更改您的代码:
printf("Literacy : ");
fgets(line, sizeof(line), stdin);
sscanf(line, "%f", &cen[i].l); /* <---- This line ---- */
printf("Literacy : %f", cen[i].l);
printf("\n");
printf(“读写:”);
fgets(生产线、尺寸(生产线)、标准DIN);
sscanf(第,%f行,&cen[i].l);/*这确实是一个问题,但它无法解释空格输出。@chqrlie我做了更改,但它不起作用,因此我重新启动Visual Studio,一切正常,再次感谢:)