前提・実現したいこと
CSVファイルの最初の2マスに縦と横の配列要素数を書いていてsscanf_sで最初の1行を読み込み要素数を決めて、2行目からgetcで1文字ずつ配列に詰めていく処理を書いるんのですが、59x59までは正常に詰めれるのですが縦か横のどちらかの要素数が60のCSVファイルでやるとエラーになります。
CSVファイルの読み込みは出来ており配列に詰めていく時にエラーになります。
縦の要素数59までは数字が詰めれてます。
発生している問題・エラーメッセージ
Line:1806
Expression:vector subjscript out of range
該当のソースコード
FILE *fp = NULL; char data[4]; char buf[64]; int c, i = 0, x = 0, y = 0; if (fopen_s(&fp, filename, "r") != 0) { exit(1); } fgets(buf, 64, fp); sscanf_s(buf, "%d, %d", &row, &colunm); MapData.resize(colunm); for (int j = 0; j<colunm; j++) { MapData[j].resize(row); } while ((c = getc(fp)) != EOF || y < colunm) { if (isdigit(c)) { data[i] = (char)c; i++; } else { data[i] = NULL; MapData[y][x] = atoi(data); x++; i = 0; if (x == row) { y++; x = 0; } } } fclose(fp);
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。