2015-10-30 61 views
-1

此程序需要讀取兩個字符串,這兩個字符串將傳遞給「確認」功能,它們將被讀取,並且該函數將具有找到一個共同的詞。我無法讀取第二個字符串,無論我插入多少個getchar

但在主要我不能讀取「string2」字符串!不管我插入多少個getchar。對於\n串1的輸入之後

#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; 
} 
+1

'scanf()'格式的'''做什麼? –

+0

歡迎來到StackOverflow。請閱讀並遵守幫助文檔中的發佈準則。 [MCVE](http://stackoverflow.com/help/mcve)適用於此處。在您發佈代碼並準確描述問題之前,我們無法有效幫助您。你應該顯示輸入和輸出,以及你已經完成的調試結果。 – Prune

回答

0

使用getchar

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

getchar(); //here 

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

它的工作!但爲什麼? –

+0

@MateusLuiz在輸入string1之後,按'\ n'換行接受的字符串2和程序結束,接受這個尾隨的換行符,我們使用'getchar()'。 – wrangler

-1

只要改變格式說明"%19[^\n]*c",將採取尾隨'\n'字符了。

相關問題