Программа должна запускаться через командную строку

Программа должна запускаться через командную строку и адекватно функционировать,но почему-то у меня только надпись в консоли появляется "Enter a string".После ввода строки программа ничего не выводит,а снова просит указать путь к файлу. Как решить данную проблему? Задание звучит так: Разработать программу, получающую строки, разделенные пробелами, как параметры командной строки, обрабатывает их функцией, и выводит результат в виде таблицы, содержащей исходную строку, обработанную строку и возвращенное значение функции (если есть). В случае, когда параметр командной строки указан /? или -?, программа должна вывести краткую информацию о назначении и вариантах использования Если программа запущена без параметров, необходимо запросить одну строку у пользователя. P.S: Уже разобрался

 #include <stdio.h>
 #include <string.h>

int output_table(int argc, char* argv[]);
int antisn(char* string);
int read_line(char string[], int n);


int main(int argc, char* argv[]) {

output_table(argc, argv);

return 0;
}

int read_line(char string[], int n) {
int ch, i = 0;
while ((ch = getchar()) != '\n')
    if (i < n)
        string[i++] = ch;

string[i] = '\0';
return i;
}
// Замена подстрок на *** во введенной строке
int antisn(char* string) {
int i = 0;

const char* wfb = "www.facebook.com";
const char* vk = "vk.com";
const char* fb = "facebook.com";
const char* wvk = "www.vk.com";

const char* zamena = "***";


for (;;) {
    char* p = strstr(string, wfb);
    if (p != NULL) {
        memcpy(p, zamena, strlen(zamena));
        memmove(p + strlen(zamena), p + strlen(wfb), strlen(p + strlen(wfb)) + 1);
        i++;
    }

    char* r = strstr(string, wvk);
    if (r != NULL) {
        memcpy(r, zamena, strlen(zamena));
        memmove(r + strlen(zamena), r + strlen(wvk), strlen(r + strlen(wvk)) + 1);
        i++;
    }

    char* k = strstr(string, vk);
    if (k != NULL) {
        memcpy(k, zamena, strlen(zamena));
        memmove(k + strlen(zamena), k + strlen(vk), strlen(k + strlen(vk)) + 1);
        i++;
    }

    char* q = strstr(string, fb);
    if (q != NULL) {
        memcpy(q, zamena, strlen(zamena));
        memmove(q + strlen(zamena), q + strlen(fb), strlen(q + strlen(fb)) + 1);
        i++;
    }
    if (p == NULL && q == NULL && k == NULL && r == NULL) return i;
}

}


int output_table(int argc, char* argv[]) {

char string[400];
int result = 0;

if (argc == 1) {
    printf("\nEnter a string:");
    read_line(string, 400);
    result = antisn(&string[0]);
    printf("\n| %15s | %15s |\n", string, result);
}
else if (!strcmp(argv[1], "/?") || !strcmp(argv[1], "-?")) {
    printf("This program is designed to replace substrings");
    printf("vk.com\nwww.vk.com\nfacebook.com\nwww.facebook.com");
    printf("In the entered text on ***");
    printf("You enter any text that contains the above substrings and watch how they turn into 
    ***");
}
else {
    int i = 1;

    while (i < argc) {
        result = antisn(argv[i]);
        printf("| %15s | %15s |\n", argv[i], result);
        i++;
    }
}
}

Ответы (1 шт):

Автор решения: mazik7512

Ошибка содержится кроется в функции output_table. Вы неправильно указываете тип форматирования при выводе.

У вас printf("\n| %15s | %15s |\n", string, result);.

А должно быть printf("\n| %15s | %15d |\n", string, result);.

Так как result является числом, а не строкой нужно использовать %d.

→ Ссылка