2012-11-10 42 views
3
#include <stdio.h> 
#define MAX 1000 
void any(char s1[], char s2[], char s3[]); 
int main() 
{ 
    char string1[MAX], string2[MAX], string3[MAX]; 
    printf("Jepni stringen 1\n"); 
    scanf("%s", &string1); //saving string 1 
    printf("Jepni stringen 2\n"); 
    scanf("%s", &string2); //saving string 2 
    any(string1, string2, string3); /*comparing characters from string 2 to string 1 and saving the places where they are equal on third string */ 
    printf("%d", string3[0]); //printing the first character of the third string 
    return 0; 
} 

void any(char s1[], char s2[], char s3[]) 
{ 
    int i, j, k; 
    k = 0; 
    for (j = 0; j != '\0'; j++) { 
     for (i = 0; i != '\0'; i++) { 
      if (s1[i] == s2[j]) { 
      s3[k] = i; 
      j++; 
      k++; 
      } 
     } 
    } 
} 

我試圖創建掃描2串交流計劃(保存它們串1和2),比計劃使用功能的會,如果弦2個漢字字符爲單位與字符串1相等,如果是的話,它會給出它們被發現的第一個位置。如果沒有找到它,它會顯示-1。程序要求第一個字符相等,這就是爲什麼我總是打印來自字符串的第一個字符3.程序不能正常工作因爲它總是打印-1。 例如,如果我穿上串1 和串2的字符d DHE程序應顯示位置 如果我把上串1 和串2我把一個 它應該顯示。一起比較兩個字符串並保存結果

+0

使用'indent'工具縮進C代碼。 –

+0

感謝您的提示。無法找到它... – Lind

回答

2

首先for循環沒有開始,因爲條件是j應該與零不同。在ASCII'\ 0'中爲零(可能不是所有的機器上),所以你寧願要檢查s2 [j]不同於零。
另一件事是s3是一個字符數組,所以把s3 [k] = i不等於'1'或'2',而是等於1或2(ASCII值),所以你應該添加48我(好,直到「9」,那麼你就必須兩位數),或打印字符串的字符,每個字符,用%d格式說明:

void any(char s1[], char s2[], char s3[]) 
{ 
    int i, j, k; 
    k = 0; 
    for (j = 0; s2[j] != '\0'; j++) { 
     for (i = 0; s1[i] != '\0'; i++) { 
      if (s1[i] == s2[j]) { 
       s3[k] = i; 
       j++; 
       k++; 
      } 
     } 
    } 
} 

也許我錯過了一些其他錯誤,嘗試代碼並運行它以查看它是否正確(還請記住使用%d說明符來打印s3)。

+0

對於任何符合C的實現,定義爲''\ 0'== 0'。 –

+0

愚蠢的me.Offcourse想檢查vector.Spent 3小時試圖找出什麼是錯的。謝謝男人。讚賞它。 – Lind