Expression: nptr != NULL
デバックではエラーが出なかったのですが、プログラムを走らせた所タイトルのような
line:68
Expression: nptr != NULL
のエラーが出ました。何が悪いのか分かりません。よろしければ、ご教示お願いします。
68行目もどこか書いておきました。
#include<stdio.h>
#include<math.h>
#include<string.h>
#include <stdlib.h>
#include <string.h>
#include <windows.h>
#include "conio.h"
FILE *input;
char fname[30];
int keisan(void);
int main(void){
char *ret,infname[60],csv[]=".csv";
loop:
printf("読み込むファイル名を入力してください\n");
scanf("%s",&fname);
ret=strstr(fname,csv);
if(ret!=NULL){printf("拡張子[.csv]を入力しないでください\n");goto loop;}
strcpy(infname,fname);
strcat(infname,csv);
input=fopen(infname,"r");
if(input==NULL){
printf( "%sファイルが開けません\n",infname);
return -1;
}else{
keisan();
}
fclose(input);
return 0;
}
int keisan(void){
FILE *output;
char outfname[60];
char str[256];
char *n,*nouse;
int k=0;
double n1,n2,time=60,times;
int start=2;
int line=0;
strcpy(outfname,fname);
strcat(outfname,"1.csv");//出力ファイル形式
output=fopen(outfname,"w");
while(fgets(str,256,input)!=NULL){
line++;
if(line>=start){
k++;
times=(double)k/time;
n=strtok(str, ",");//1行目
n=strtok(NULL,",");//2行目
n1=strtod(n,&nouse);
n=strtok(NULL,",");//3行目
n=strtok(NULL,",");//4行目
n2=strtod(n,&nouse); ←←←68行目
printf("%d,%lf,%2.2lf,%2.1lf \n",k,times,n1,n2);
fprintf(output,"%d,%lf,%2.2lf,%2.1lf \n",k,times,n1,n2);
}
}
fclose(output);
return 0;
}
お礼
ありがとうございます print(0.1+0.1+0.1 == 0.3) で False が返るのは驚きでした。 計算するにしても桁数は常に意識したほうがよさそうです。