思いつきで作ったため、雑なプログラムです><
----------main.cpp----------
#include <stdio.h>
#include <stdlib.h>
#define DATA_MAX 256
void main() {
FILE *fp_in, *fp_out;
char dammy[256];
int no, data, n,
a, b, c, d, e;
if((fp_in = fopen("data.txt","r")) == NULL) {
exit(EXIT_FAILURE);
}
fp_out = fopen("data2.txt","w");
printf("No."); scanf("%d", &no); printf("\n");
printf("Data"); scanf("%d", &data); printf("\n");
fscanf(fp_in, "%s", dammy);
fprintf(fp_out, "要素番号,節点番号1,節点番号2,節点番号3,材料番号\n");
while(n = fscanf(fp_in, "%d,%d,%d,%d,%d", &a, &b, &c, &d, &e) != EOF) {
if(n == 1) {
if(a == no) {
e = data;
}
fprintf(fp_out, "%d,%d,%d,%d,%d\n", a, b, c, d, e);
} else {
fgetc(fp_in);
}
}
fclose(fp_in);
fclose(fp_out);
}
読み取りデータ(data.txt)
要素番号,節点番号1,節点番号2,節点番号3,材料番号
1,18,16,11,0
2,18,31,16,0
3,19,30,15,0
4,20,29,14,0
5,21,28,13,0
6,22,27,12,0
7,23,26,11,0
実行結果
入力値 No 6 Data 2
出力データ(data2.txt)
要素番号,節点番号1,節点番号2,節点番号3,材料番号
1,18,16,11,0
2,18,31,16,0
3,19,30,15,0
4,20,29,14,0
5,21,28,13,0
6,22,27,12,2 <--- ここが変わってます
7,23,26,11,0
意図が違ってたらごめんなさい。
参考になれば幸いです。
お礼
丁寧に回答していただき本当にありがとうございます! fscanf関数とwhile,if文を用いればこのように1行ずつ処理できるのですね. 非常に参考になりました! ありがとうございます! 早速このコードを参考に自分のプログラムに組み込んでみようと思います!