Я делаю тип Node-клиента, который принимает в качестве параметров:
./node <port> <address> <neighbourAddress>:<weight>
Я обработал порт и адрес и сохранил их значения в каждой из своих переменных через atoi. Тем не менее, я не знаю, как справиться с
<neighbourAddress>:<weight>
как они могут появляться неоднократно. Э.Г.
./node 8888 1 26:2 34:3 12:8
В этом случае оно появляется три раза, но не ограничивается только этой суммой.
Что мне нужно сделать, чтобы прочитать аргументы, разделенные ':', и сохранить их значения в переменной?
Вот что у меня есть:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "print_lib.h"
int port;
int ownAddress;
int main(int argc, char *argv[]){
if(argc >= 3){
/* to receive port number */
port = atoi(argv[1]);
if((port <= 1024 || port >= 65535) && port != 0){
fprintf(stderr, "Port number has to be between 1024 and 65535.\n");
exit(EXIT_FAILURE);
}
/* to receive ownaddress */
ownAddress = atoi(argv[2]);
if(ownAddress >= 1024 && ownAddress != 0){
fprintf(stderr, "Node's address has to be less than 1024.\n");
exit(EXIT_FAILURE);
}
/* below here is where I need to handle reoccuring arguments */
/* in the format <neighbourAddress>:<weight> */
}
else {
fprintf(stderr, "Too few arguments\n");
exit(EXIT_FAILURE);
}
}