Я пишу функцию/метод в C, который должен сделать следующее:Указатели и строка манипуляции
/** * Recieves списка аргументов и копии ConfFile от имени показателей * Файл конфигурации. * Возвращает 1, если используется имя файла по умолчанию или 2, если * параметр -f существует, и поэтому используется указанное имя . Возвращает 0, если есть параметр -f * , но недействителен. (Последний аргумент)
*/
В основном один из этих двух вариант будет "вопрос" по программе:
1- контроллер -f FCFS | Look
2- контроллер Fcfs | LOOK
Если второе задано, мы вводим случай использования имени по умолчанию.
int get_conf_name(char* argv[], char* conffile) {
// Searches for -f
s = strstr(*argv, "-f");
if(s != NULL){
if(//its valid){
strcpy(conffile, //the name of the file which comes after -f
return 2
}
else return 0
}
else{
strcpy(confile, "config.vss")
return 1
}
}
Проблема в том, как получить слово после -f и скопировать его в файл confile? И могу ли я получить доступ к argv так же, как я получаю доступ к conffile, так как один из них является массивом? Я думал об использовании цикла for и strlen, но для этого было бы много ненужной работы для компьютера, не так ли?
Это не так, как работает 'strstr'. 'strstr' ищет подстроку (иглу) в другой строке (стог сена). Вместо этого вы ищете целую строку в массиве строк. Вы должны использовать цикл. –
btw: опции «переданы» (не «заданы») программой. Если вы не обращаетесь к программе вызывающего абонента. –
@Giulio Franco О спасибо: D Поинтересовался, что я имею в виду, что есть две возможности для того, чтобы пользователь мог запросить программу – BVCGAAV