У меня есть задание из школы, в котором я должен создать проект, который принимает аргументы из CMD, каждый аргумент состоит из двух слов, разделенных /
, затем мы вставляем предложение, и программа должна найти все вхожденияпервого слова и замени его вторым, я просто пытаюсь заставить его работать, используя strtok_r
.
Вот мой код:
#include <stdio.h>
#include <string.h>
#include <conio.h>
int main(int args, char *argv[]) {
char *token;
char *token2;
char veta[1000];
int i, j, k;
int err;
char *saveptr1, *saveptr2;
if (fgets(veta, 1000, stdin)) {
token = strtok_r(veta, " \n", &saveptr1);
k = 1;
while (token != NULL) {
printf("Cycle %d: \n", k++);
printf("%s\n", token);
for (i = 1; i < args; i++) {
token2 = strtok_r(argv[i], "/", &saveptr2);
printf("%s ", token2);
token2 = strtok_r(NULL, "/", &saveptr2);
printf("%s \n", token2);
}
token = strtok_r(NULL, " \n", &saveptr1);
}
}
return(0);
}
, когда я набираю аргументы в CMD и вставляю предложение, например, с четырьмя словами, выполняется 4 цикла, но вывод не такой, как я хочубыть ... Например, когда я даю следующие аргументы: hi/hello how/good no/yet
и вставляю предложение, получается:
Cycle1:
(first word of sentence)
hi hello
how good
no yet
Cycle4:
(second word of sentence)
hi (null)
how (null)
no (null)
Cycle4:
(third word of sentence)
hi (null)
how (null)
no (null)
Cycle4:
(fourth word of sentence)
hi (null)
how (null)
no (null)
, когда это должно быть так:
Cycle1:
(first word of sentence)
hi hello
how good
no yet
Cycle4:
(second word of sentence)
hi hello
how good
no yet
Cycle4:
(third word of sentence)
hi hello
how good
no yet
Cycle4:
(fourth word of sentence)
hi hello
how good
no yet
Я не могу бытьв состоянии это исправить, вы можете мне помочь?
Заранее спасибо.