c语言gets_s()不起作用
写了个程序来算电阻的电流和电压值得,但是在input.cpp文件中14行的gets_s(data);不能正常的工作(没有让我输入的机会),单步执行的时候一进去就出来了,想请教一下各位大神,看看这是怎么一回事,谢谢!
main.cpp中
#include <stdlib.h>
#include <stdio.h>
#include "def.h"
int main()
{
int number;
int *number_pointer;
double e, voltage[100], current[100], resistance[100];
double *e_pointer, *voltage_pointer, *current_pointer, *resistance_pointer;
number = 0;
number_pointer = &number;
resistance_pointer = &resistance[1];
e_pointer = &e;
input(e_pointer, resistance_pointer, number_pointer);
voltage_pointer = &voltage[*number_pointer];
current_pointer = ¤t[*number_pointer];
resistance_pointer = &resistance[*number_pointer];
calculate(e_pointer, resistance_pointer, voltage_pointer, current_pointer, number_pointer);
current_pointer = current;
voltage_pointer = voltage;
output(current_pointer, voltage_pointer, number_pointer);
return 0;
}
input.cpp中:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void input(double *e_pointer, double *resistance_pointer, int *number)
{
int i, j, data_length;
char data[100];
char resist_string[100];
char *origin_pointer, *copy_pointer;
printf("请输入电动势大小:");
scanf_s("%lf", e_pointer);
putchar('\n');
printf("请输入电阻:");
gets_s(data);
putchar('\n');
data_length = strlen(data);
for (i = 0; i <= data_length; i++)
{
for (j = 0; j <= 99; j++)
{
resist_string[j] = '\0';
}
j = i;
while ((' ' != data[j]) && ('\0' != data[j]))
{
j++;
}
origin_pointer = &data[i];
copy_pointer = resist_string;
while (i < j)
{
*copy_pointer = *origin_pointer;
copy_pointer++;
origin_pointer++;
j--;
}
*resistance_pointer = atof(resist_string);
if (0 >= *resistance_pointer)
{
printf("无效的电阻输入值");
exit(0);
}
resistance_pointer++;
*number++;
i = j + 1;
}
if (1 == *number % 2)
{
printf("电阻的数量不能为奇数");
exit(0);
}
}
calculate.cpp中
void calculate(double *elec_force, double *resistance_pointer, double *voltage_pointer, double *current_pointer, int *number)
{
int i;
double rate;
double *vice_voltage_pointer, *vice_current_pointer;
vice_voltage_pointer = voltage_pointer;
vice_current_pointer = current_pointer;
*vice_current_pointer = 1.0;
*vice_voltage_pointer = (*vice_current_pointer) / (*resistance_pointer);
*(vice_current_pointer - 1) = 1.0;
*(vice_voltage_pointer - 1) = (*(vice_current_pointer - 1)) * (*(resistance_pointer - 1));
vice_current_pointer -= 2;
vice_voltage_pointer -= 2;
resistance_pointer -= 2;
for (i = *number - 2; i >= 1; i--)
{
*vice_voltage_pointer = *(vice_voltage_pointer + 1) + *(vice_voltage_pointer + 2);
*vice_current_pointer = *vice_voltage_pointer / *resistance_pointer;
*(vice_current_pointer + 1) = *vice_current_pointer;
*(vice_voltage_pointer + 1) = (*(vice_current_pointer + 1)) * (*(resistance_pointer + 1));
vice_current_pointer -= 2;
vice_voltage_pointer -= 2;
resistance_pointer -= 2;
}
rate = *elec_force / (*(vice_voltage_pointer + 1) + *(vice_current_pointer + 2));
for (i = 1; i <= *number; i++)
{
*voltage_pointer *= rate;
*current_pointer *= rate;
voltage_pointer--;
current_pointer--;
}
}
output.cpp中
#include <stdio.h>
void output(double *current_pointer, double *voltage_pointer, int *number)
{
int i;
for (i = 1; i <= *number; i++)
{
printf("%lf %lf\n", *current_pointer, *voltage_pointer);
current_pointer++;
voltage_pointer++;
}
}
dev.h中
void output(double *current_pointer, double *voltage_pointer, int *number);
void calculate(double *elec_force, double *resistance_pointer, double *voltage_pointer, double *current_pointer, int *number);
void input(double *e_pointer, double *resistance_pointer, int *number);