我的代码有一些问题。
我的程序根据来自输入文件的三个带的颜色计算电阻值,然后打印到输出文件。
输入文件示例:
红、绿、蓝
绿色、灰色、黄色
输出文件示例:
电阻(欧姆)= 680
电阻(千欧姆)= 1420
然而,每次我运行该程序时它都会崩溃。我进行了一些调试,发现它有问题yellow
索引来自decodeString
函数给它一个NULL
价值。我通过将值传递给函数来部分解决了这个问题decodeString
而不是使用指针,现在它似乎可以工作。
现在我没有得到我期望的正确输出,我不知道错误来自哪里。我运行的代码,但目前没有给出正确的输出。我只是不知道该去哪里寻找了。
认为有人可以帮我解决这个问题吗?或者如果我可能做错了什么,请指出并解释为什么会出错。我们将不胜感激!
注释行用于调试。
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#define size 100
int DecodeString(char inputString[]){
const char kColorTable[10][10] = {"black", "brown", "red", "orange", "yellow", "green", "blue", "violet", "gray", "white"};
int i;
for(i=0; i<10; i++){
//printf("\n>>%s,%s",inputString,kColorTable[i]);
if(strcmp(inputString, kColorTable[i]) == 0){
return i;
}
}
return -1;
}
int main(){
int i=0, colord[3]={0,0,0};
char color[size], *token, *inputString;
double resistance=0, value;
FILE *fptrin, *fptrout;
if(((fptrin = fopen("input.txt", "r"))==NULL) || ((fptrout = fopen("output.txt", "w")) == NULL)){
printf("Error 404: File not found");
exit(1);
}
while(fgets(color, size, fptrin)!=NULL){
token = strtok(color, ",");
while(token != NULL){
if(token[strlen(token)-1]=='\n')
token[strlen(token)-1]='\0';
colord[i] = DecodeString(token);
//printf(">>%s:%d ",token,colord[i]);
i++;
token = strtok(NULL, ",");
puts("");
}
//printf("<><>");
if (colord[0] == -1 || colord[1] == -1 || colord[2] == -1){
printf("\n\nBad code -- cannot compute resistance\n");
}
else{
resistance = (10.0 * colord[0] + colord[1]) * pow(10.0, colord[2]);
}
printf("%f",resistance);
if(resistance > 1000){
fprintf(fptrout,"Resistance in Kilo-Ohms: %f",resistance);
}
else{
fprintf(fptrout,"Resistance in Ohms: %f",resistance);
}
}
//fclose(fptrin);
//fclose(fptrout);
getchar();
return 0;
}
所以我尝试调试我的程序以找出发生了什么,这就是我得到的结果。
蓝黑
蓝色、棕色
蓝红
蓝色、橙色
蓝色、黄色
蓝绿
蓝色,蓝色
红黑
棕红色
红色,红色
,黑色的
,棕色的
,重降
,橙子
,黄色的
,格林
,蓝胜
,紫色
,灰色
,美白