Cを使用して.txtファイルを2重配列に解析するコードを作成しました。各ポイントを"、"で区切ってフォーマットしました。今、私はこのコードを.csvファイルから同じデータを解析するようにします。ファイルタイプを変更すると、セグメント化エラーが発生します。.txtと.csvの解析C
これはなぜ発生するのですか?これらの2つのドキュメントタイプが同じ方法で読み取られると信じて間違っていますか?
この記事の主な質問は、.txtと.csvを読むときの違いは何ですか?
/*
* Calibration File Read Test
*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
FILE *myfile = fopen ("BarEast.txt", "r");
/* I want to change this file type to .csv */
/* opening file for reading */
if(myfile == NULL)
{
printf("Error opening file");
return(-1);
}
int i = 0;
int j, k;
char *result[361] = {0};
char line[10];
char *value;
while(fgets(line, sizeof(line), myfile))
{
value = strtok(line, ",");
result[i] = malloc(strlen(value) + 1);
strcpy(result[i], value);
i++;
}
double val;
double cal[361] = {0};
for(k = 0; k < 361; k++)
{
val = atof(result[k]);
cal[k] = val;
}
for(j = 0; j < 361; j++)
{
printf("Element[%d] = %f\n", j, cal[j]);
}
fclose(myfile);
return 0;
}
文字列からスキャンするために 'sscanf'を使うだけで、何らかのRegexをサポートしています。http://www.cplusplus.com/reference/cstdio/scanf/ – k06a
あなたの.txtと.txtを比較することをお勧めします。 CSVファイル。私はそれらがファイル名の拡張子を除いてあらゆる点で同一でなければならないと思うでしょう、あなたのコードが1つのために働くならば、それは他のもののために働くはずです。 – Logicrat
[Strcpyを使わないでください](http://stackoverflow.com/questions/5122882/strcpy-string-array)[strcpyのマニュアルページ](http://linux.die.net/man/3/strcpy)なぜそれを避けたいのでしょうか? –