数组值出错了

时间:2016-12-13 01:21:54

标签: c

我的代码遇到了一些问题。

我的程序根据来自输入文件的三个波段的颜色计算阻力量,然后打印到输出文件。

示例输入文件:

red, green, blue   
green, gray, yellow

示例输出文件:

Resistance in ohms = 680  
Resistance in kilo-ohms = 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) {
    i = 0;
    token = strtok(color, ", \n");
    while(token != NULL && i < 3) {
        colord[i] = DecodeString(token);
        i++;
        token = strtok(NULL, ", \n");
    }

    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/1000);
    }

    else{
      fprintf(fptrout,"Resistance in Ohms: %f",resistance);
    }
  }

  //fclose(fptrin);
  //fclose(fptrout);

  getchar();
  return 0;
}

我试图调试我的程序以找出发生了什么,这是我得到的结果。我想这就是为什么我无法正确输出。

  
    
      

蓝色,黑色
      蓝色,棕色
      蓝色,红色
      蓝色,橙色
      蓝色,黄色
      蓝,绿
      蓝色,蓝色
      红,黑
      红色,棕色
      红,
      ,blackn
      ,brownn
      ,redown
      ,橙色
      ,黄
      ,greenn
      ,bluewn
      ,紫
      ,graywn
      ,美白

    
  

我没有意识到这是我复制过的旧代码。结果保持不变。

0 个答案:

没有答案