I can't read the second string, no matter how many getchar i insert

时间:2015-10-30 23:38:41

标签: c string getchar

This program need to read two strings, this two strings will be passed to the "confirm" function, they will be read and the the function will have to find a word in common. But in the main i cant read the "string2" string! No matter how many getchar i insert. #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 个答案:

答案 0 :(得分:0)

Use getchar after input of string 1 for \n: printf("Type the first text: \n"); scanf("%[^\n]", string1); getchar(); //here printf("Type the second text: \n"); scanf("%[^\n]", string2);

答案 1 :(得分:-1)

Just change the format specifier to "%19[^\n]*c", it will take the trailing '\n' character away.