2014-02-23 47 views
-5

我已被分配來構造一個代碼,執行以下操作: 要求用戶輸入一個單詞(最多30個字母),然後刪除所有「A,a,O, o「字母並打印出來,沒有任何空格。例如:輸入:OkleaAo,輸出:kle刪除C中的一個字符串中的字母

我被告知更簡單的方法是使用2個數組,並用IF循環將不是A/a/o/O的字母添加到第二個數組,然後打印它。

我真的被卡住了,我知道我必須使用指針,但因爲它不工作。 任何幫助,建議?

我寫了這樣的事情:

#include <stdio.h> 

char input[30], *p; 
char output[30]; 

main() 
{ 
    printf("Enter a string:\n", input); 
    scanf("%s", input); 
    if *(p==o); 
    { 
     *p=0; 
     printf("String after deletion:", input); 
    } 

} 
+0

你的意思是 「指針」 或 「點」? – kuroop

+0

我編輯它。對不起,我真的很累,恐怕我的課程不夠好,我在這裏錯過了一些東西。 它沒有好的例子來說明如何使用指針或替換字符或打印沒有空格的東西。我在這黑暗中。 (和網上最相關的東西,我可以找到它的C++) – user3328369

+0

沒有什麼是經受實質性處理。 – BLUEPIXY

回答

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

int main(){ 
    char input[30+1]; 
    char output[30+1]; 
    int i, j; 

    printf("Enter a string :"); 
    scanf("%30[^\n]", input); 

    for(j = i = 0;input[i];++i){ 
     char *p, ch = input[i]; 
     p = strchr("AaOo ", ch); 
     if(p == NULL) 
      output[j++] = ch; 
    } 
    output[j] = '\0'; 
    printf("\nString after deletion: %s\n", output); 
    return 0; 
} 

#include <stdio.h> 

int main(){ 
    char input[30+1]; 
    char *in, *out; 

    printf("Enter a string :"); 
    scanf("%30[^\n]", input); 

    out = in = input; 
    while(*in){ 
     char ch = *in; 
     if(ch != 'A' && ch != 'a' && ch != 'O' && ch != 'o' && ch != ' ') 
      *out++ = *in; 
     ++in; 
    } 
    *out = '\0'; 
    printf("\nString after deletion: %s\n", input); 
    return 0; 
} 
+0

哇謝謝! 你介意給我解釋一下 p = strchr(「AaOo」,ch); if(p == NULL) output [j ++] = ch; 呢? 我甚至都不知道名爲「string.h」的庫 – user3328369

+0

'strchr'返回一個指向指定字符串的指針。也就是說,如果找不到轉讓。 – BLUEPIXY

+0

非常感謝,你幫了我很多:D – user3328369