我从文件中获取不同的晶体管数据。程序将其存储在结构中。然后它会提示用户输入。用户输入5个不同的值,例如12 0.03 100 320 65,然后程序获取这些值并将其与文件中的数据进行比较,并查看是否有任何晶体管适合您输入的参数。 程序然后再次提示用户,并且这一直重复,直到输入字母q,结束程序。
我遇到的问题 - 我在互联网上拖网几个小时试图找到一个解决方案,但没有一个工作 - 是第一套之后的任何输入都不被接受。所以它看起来像这样。
请输入:电压电流功率频率增益
15 0.1 200 100 80
15 0.1 200 100 80
所有相关的晶体管
请输入:电压电流功率频率增益
20 0.3 100 150 40
?1 2 3 4 5
问号始终是一个奇怪的角色。在过去的几个小时里它一直是?在一颗钻石中,字母P和一个带有0010的小方块。我在互联网上发现的一切都说这应该有效。我错过了什么?
这是我的输入功能
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#define MAX 15
struct input{
int volt, power, freq, gain;
float amp;
};
struct input inputs[MAX_IN];
int CHK =1, number=0;
int input_function1()
{
const char check[3] = {'\0'};
int i;
const char inp[30] = {'\0'};
printf("Please input: Voltage Current Power Frequency Gain\n");
fgets(inp, 30, stdin);
puts(inp); //Prints out the string to see if the input has been correctly accepted
ungetc(inp, stdin);
sscanf(inp, "%s", &check);
if(check[0]!='q' && check[1]!='q' && check[2]!='q')
{
sscanf(inp, "%d %f %d %d %d", &inputs[number].volt, &inputs[number].amp,
&inputs[number].power, &inputs[number].freq, &inputs[number].gain);
}
}
以下是我调用该函数的方法。 check_function是根据数据库检查输入晶体管的功能。
while(CHK==1)
{
input_function1();
check_function();
++number;
}
答案 0 :(得分:0)
您正在声明一个const char
数组,如下所示:
const char test[30] = {'\0'};
并且实际上创建了一个不可编辑的字符串/数组,应标记字符串结尾的终止0是此数组中唯一的字符。此零也设置在test[0]
。
答案 1 :(得分:-1)
这是一个小例子,修复了当前片段中的一些内容:
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
#include <conio.h>
#define MAX 15
struct input {
int volt, power, freq, gain;
float amp;
};
struct input inputs[MAX];
int fill_input(int index) {
char check[4];
char inp[30];
printf("Please input: Voltage Current Power Frequency Gain\n");
fgets(inp, 30, stdin);
puts(inp);
sscanf(inp, "%s", &check);
if (strcmp(check, "qqq") == 0) {
return 0;
}
sscanf(inp, "%d %f %d %d %d", &inputs[index].volt, &inputs[index].amp,
&inputs[index].power, &inputs[index].freq, &inputs[index].gain);
return 1;
}
int main(int argc, char *argv[]) {
int index = 0;
while (1 && index < MAX) {
if (!fill_input(index)) break;
index++;
}
printf("End");
getch();
}
上述代码段的目标是帮助您继续前进。
您可以考虑几点注意事项:
char*
,您正在使用{ {1}},数据类型应匹配