我正在将以下格式的行存储到字符中。每个单词都由制表符分隔。
我希望能够将每行字符拆分,以获取BSSID、CH、CIPHER和ESSID字段。我的最终目标是将每行的字段存储在字符数组中,以便更方便地处理它们。类似于这样的格式:
BSSID PWR Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID
00:34:34:34:34:34 -56 9 0 0 11 54e. WPA2 CCMP PSK wifi_id
00:44:44:44:44:34 -56 9 0 0 11 54e. WPA2 CCMP PSK wifi_id2
00:54:54:54:54:54 -56 9 0 0 11 54e. WPA2 CCMP PSK wifi_id3
我希望能够将每行字符拆分,以获取BSSID、CH、CIPHER和ESSID字段。我的最终目标是将每行的字段存储在字符数组中,以便更方便地处理它们。类似于这样的格式:
char fields[] = { BSSID, CH,CIPHER, ESSID}
现在我正在使用 strtok 来分割字符中的 \t
,但这很不舒服。以下是我的第一种方法,但它非常简陋,因为它只关注第四行和第二个字段。请问是否有人能帮我改进代码?我也可以尝试其他编程方式。
const char s[2]= "\t";
while (fgets(path, sizeof(path)-1, fp) != NULL) {
i = i + 1;
if (i == 4){
token = strtok(path, s);
/* walk through other tokens */
while( token != NULL )
{
token = strtok(NULL, s);
strncpy(field2, token, 18);
break;
}
}
}