Я не могу прочитать вторую строку, независимо от того, сколько getchar я вставляю

Эта программа должна прочитать две строки, эти две строки будут переданы в функцию "подтверждения", они будут прочитаны, и функция должна будет найти общее слово.

Но в основном я не могу прочитать строку "string2"! Независимо от того, сколько getchar я вставляю.

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

void confirm(char string1[],char string2[]){

    char word[20];
    char w_aux[20];
    int i, j, k, l, m;
    int len1, len2;
    int find;

    i = 0; 

    len1 = strlen(string1);
    len2 = strlen(string2);

    while (i < len1){
        j = 0;

        while ((string1[i] != ' ') && (i < len1)){
            word[j] = string1[i];
            i++;
            j++;
        }
        word[j] = '\0';
        k = 0;
        find = 0;
        while((k < len2) && (find == 0)){ 

            l = 0;
            while ((string2[k] != ' ') && (k < len2)){
                w_aux[l] = string2[k];
                k++;
                l++;
            }
            w_aux[l] = '\0';        
            if (j == l){
                m = 0;
                while((word[m] == w_aux[m]) && (m<j)){
                    m++;
                }
                if (m == j){
                    find = 1;
                }
            }
            k++;
        }
        i++;
    }
    printf("%s\n", word);
}

int main (){

    char string1[20];
    char string2[20];

    printf("Type the first text: \n");
    scanf("%[^\n]s", string1);

    printf("Type the second text: \n");
    scanf("%[^\n]s", string2);
    getchar();


    confirm(string1, string2);

    return 0;
}

2 ответа

Решение

Использование getchar после ввода строки 1 для \n:

printf("Type the first text: \n");
scanf("%[^\n]", string1);

getchar(); //here

printf("Type the second text: \n");
scanf("%[^\n]", string2);

Просто измените спецификатор формата на "%19[^\n]*c", это займет конечный '\n' характер прочь

Другие вопросы по тегам