#6
by かずま » 7年前
スヌーピー さんが書きました:
コード:
//座標データ1つを抜き出す
for(i=0;isdigit(in1[in1_adr]) == 1 || in1[in1_adr] == '.' || in1[in1_adr] == ' ' || in1[in1_adr] == '-' || in1[in1_adr] == '+';in1_adr++,i++) key_word[i]=in1[in1_adr];
g++ でコンパイルすると、isdigit('0') が 1 になるんですが、
gcc や VC++ だと 1 になりません。
私もサンプルプログラムを書いてみました。
データのサイズを固定値にしているので、その辺は修正が必要でしょう。
コード:
#include <stdio.h> // fopen, fclose, fgets, fscanf, fprintf
#include <string.h> // strstr
#define N 3000
double a[N][3];
int main(void)
{
int i, n = 0;
double d[3];
char buf[1024];
FILE *fin, *fout;
fin = fopen("in1.txt", "r");
if (!fin) return 1;
while (fgets(buf, sizeof buf, fin) && !strstr(buf, "VISIBLE")) ;
while (n < N && fscanf(fin, "%lf%lf%lf", &a[n][0], &a[n][1], &a[n][2]) == 3) n++;
fclose(fin);
fin = fopen("in2.txt", "r");
if (!fin) return 2;
fout = fopen("out.txt", "w");
if (!fout) return 3;
while (fgets(buf, sizeof buf, fin) && !strstr(buf, "VISIBLE")) ;
while (fscanf(fin, "%lf%lf%lf", &d[0], &d[1], &d[2]) == 3) {
for (i = 0; i < n && (d[0]!=a[i][0] || d[1]!=a[i][1] || d[2]!=a[i][2]); i++) ;
if (i < n) fprintf(fout, "%f %f %f\n", d[0], d[1], d[2]);
}
fclose(fin);
fclose(fout);
return 0;
}
参考になりますか?
[quote="スヌーピー" id=3,19576,147871]
[code]
//座標データ1つを抜き出す
for(i=0;isdigit(in1[in1_adr]) == 1 || in1[in1_adr] == '.' || in1[in1_adr] == ' ' || in1[in1_adr] == '-' || in1[in1_adr] == '+';in1_adr++,i++) key_word[i]=in1[in1_adr];
[/code][/quote]
g++ でコンパイルすると、isdigit('0') が 1 になるんですが、
gcc や VC++ だと 1 になりません。
私もサンプルプログラムを書いてみました。
データのサイズを固定値にしているので、その辺は修正が必要でしょう。
[code=c]
#include <stdio.h> // fopen, fclose, fgets, fscanf, fprintf
#include <string.h> // strstr
#define N 3000
double a[N][3];
int main(void)
{
int i, n = 0;
double d[3];
char buf[1024];
FILE *fin, *fout;
fin = fopen("in1.txt", "r");
if (!fin) return 1;
while (fgets(buf, sizeof buf, fin) && !strstr(buf, "VISIBLE")) ;
while (n < N && fscanf(fin, "%lf%lf%lf", &a[n][0], &a[n][1], &a[n][2]) == 3) n++;
fclose(fin);
fin = fopen("in2.txt", "r");
if (!fin) return 2;
fout = fopen("out.txt", "w");
if (!fout) return 3;
while (fgets(buf, sizeof buf, fin) && !strstr(buf, "VISIBLE")) ;
while (fscanf(fin, "%lf%lf%lf", &d[0], &d[1], &d[2]) == 3) {
for (i = 0; i < n && (d[0]!=a[i][0] || d[1]!=a[i][1] || d[2]!=a[i][2]); i++) ;
if (i < n) fprintf(fout, "%f %f %f\n", d[0], d[1], d[2]);
}
fclose(fin);
fclose(fout);
return 0;
}
[/code]
参考になりますか?