类似下面简单处理下
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
char record[100][5][16];
int cnt = 0;
#define IS_ALPHA(a) ((a >= 'a' && a <='z') || (a >= 'A' && a <='Z') || (a >= '0' && a <='9') || (a == '_'))
char* get_record(char* str) {
int i = 0, j = 0;
if (cnt >= 100) return NULL;
while (1) {
if (IS_ALPHA(*str)) {
if (j < 15)
record[cnt][i][j++] = *str;
}
else {
if (j){
record[cnt][i][j++] = 0;
j = 0;
i++;
}
if (*str == 0 || i == 5) break;
}
str++;
}
//add or not
if (i == 5){
int n = cnt;
for (i = 0; i < cnt; i++) {
if (strcmp(record[i][0], record[cnt][0]) == 0 &&
strcmp(record[i][1], record[cnt][1]) == 0 ) {
if (atoi(record[i][4]) < atoi(record[cnt][4])) {
strcpy(record[i][4], record[cnt][4]);
}
n--;
break;
}
}
cnt = n + 1;
}
return (*str? str: NULL);
}
void print_record() {
int i;
for (i = 0; i < cnt; i++) {
printf("%s %s %s %s %s\n",
record[i][0], record[i][1], record[i][2], record[i][3], record[i][4]);
}
}
int main(){
char str[] = "
DN100 CDN_1 0 0 123
DN100 CDN_2 0 0 216
DN100 CDN_1 0 0 106
DN100 CDN_3 0 0 106
DN100 CDN_3 0 0 107
DN100 CDN_2 0 0 218";
char* s = str;
while (s = get_record(s)) {}
print_record();
return 0;
}
追问能不能用结构体数组去写,并且上述代码不能正常运行啊,谢谢!