我正在寻找您运行此代码的宝贵建议。
此代码的目标
- 修改输入文件中间的数据
目标的详细说明
- 通过字符串搜索找到元素部分
- 在Element部分中,读取每行的第一列,并找到用户要求的start_value和end_value
- 在start_value和end_value行之间,必须删除最后一行并输入用户给出的数字。
此代码中的问题 - 如果我运行此代码,则特定部分不会在输出文件中打印。
提前谢谢。
输入文件
28641 1.09500000000000e+003 -1.14500000000000e+003 1.00333333333333e+003
28642 1.09500000000000e+003 -1.14500000000000e+003 8.60000000000000e+002
28643 1.09500000000000e+003 -1.14500000000000e+003 7.16666666666667e+002
28644 1.09500000000000e+003 -1.14500000000000e+003 5.73333333333333e+002
28645 1.09500000000000e+003 -1.14500000000000e+003 4.30000000000000e+002
28646 1.09500000000000e+003 -1.14500000000000e+003 2.86666666666667e+002
28647 1.09500000000000e+003 -1.14500000000000e+003 1.43333333333334e+002
28648 1.09500000000000e+003 -1.14500000000000e+003 0.00000000000000e+000
END_COORDINATES
ELEMENTS
1 1 2 3 4 5 6 7 8 1
2 4 3 9 10 8 7 11 12 1
3 10 9 13 14 12 11 15 16 1
4 14 13 17 18 16 15 19 20 1
5 18 17 21 22 20 19 23 24 1
6 22 21 25 26 24 23 27 28 1
7 26 25 29 30 28 27 31 32 1
8 30 29 33 34 32 31 35 36 1
9 34 33 37 38 36 35 39 40 1
10 38 37 41 42 40 39 43 44 1
11 42 41 45 46 44 43 47 48 1
12 46 45 49 50 48 47 51 52 1
13 50 49 53 54 52 51 55 56 1
14 54 53 57 58 56 55 59 60 1
15 58 57 61 62 60 59 63 64 1
16 62 61 65 66 64 63 67 68 1
17 66 65 69 70 68 67 71 72 1
18 70 69 73 74 72 71 75 76 1
19 74 73 77 78 76 75 79 80 1
20 78 77 81 82 80 79 83 84 1
21 82 81 85 86 84 83 87 88 1
在预期的输出文件中 - 在Sl.no 4-14的Element部分下,最后一行从1变为2 - 这是最终的预期结果
我的代码附在下面,以供你的善意
预期的输出文件
28641 1.09500000000000e+003 -1.14500000000000e+003 1.00333333333333e+003
28642 1.09500000000000e+003 -1.14500000000000e+003 8.60000000000000e+002
28643 1.09500000000000e+003 -1.14500000000000e+003 7.16666666666667e+002
28644 1.09500000000000e+003 -1.14500000000000e+003 5.73333333333333e+002
28645 1.09500000000000e+003 -1.14500000000000e+003 4.30000000000000e+002
28646 1.09500000000000e+003 -1.14500000000000e+003 2.86666666666667e+002
28647 1.09500000000000e+003 -1.14500000000000e+003 1.43333333333334e+002
28648 1.09500000000000e+003 -1.14500000000000e+003 0.00000000000000e+000
END_COORDINATES
ELEMENTS
1 1 2 3 4 5 6 7 8 1
2 4 3 9 10 8 7 11 12 1
3 10 9 13 14 12 11 15 16 1
4 14 13 17 18 16 15 19 20 2
5 18 17 21 22 20 19 23 24 2
6 22 21 25 26 24 23 27 28 2
7 26 25 29 30 28 27 31 32 2
8 30 29 33 34 32 31 35 36 2
9 34 33 37 38 36 35 39 40 2
10 38 37 41 42 40 39 43 44 2
11 42 41 45 46 44 43 47 48 2
12 46 45 49 50 48 47 51 52 2
13 50 49 53 54 52 51 55 56 2
14 54 53 57 58 56 55 59 60 2
15 58 57 61 62 60 59 63 64 1
16 62 61 65 66 64 63 67 68 1
17 66 65 69 70 68 67 71 72 1
18 70 69 73 74 72 71 75 76 1
19 74 73 77 78 76 75 79 80 1
20 78 77 81 82 80 79 83 84 1
21 82 81 85 86 84 83 87 88 1
代码
int Extract_Node_value( char *Elements, char *To_Element_set_list)
{
char line[256];
char line1[256];
int line_size;
int Index, Index1, i;
int START_VALUE = 4;
int STOP_VALUE = 15;
int word;
int fword;
if (!file1) {
perror("fopen");
exit(EXIT_FAILURE);
}
while(fgets(line, sizeof(line),file1)) {
if (!strstr(line, To_Find_node)){
continue;
}
printf("success \n");
while (fscanf(file1, "%s%*[^\n]", fword)==1){
printf("success 2 \n");
if (fword >= START_VALUE && fword <=STOP_VALUE){
if (!fgets(line, sizeof line,file1)) {
return 3;
}
while(fgets(line, sizeof line,file1)) {
// if (strstr(line, To_Element_set_list)){
// return 0;
// }
line_size = strlen(line)-1;
Index1 = 0;
int Count = 3;
for( Index=line_size; Count && Index ; Index--) {
// if( line[Index] != ' ' ) {
// continue;
//}
for( ;line[Index]== ' '; ){
Index--;
}
Count--;
}
line[Index+1] = '\0';
line[Index+2] = '\0 ';
printf("%s %d \n", line, Element_id);
fprintf(out1, " %s %d \n", line, Element_id);
BufferIndex = Index1;
}
}
}
}
return 0;
}