2012-06-16 74 views
-2

如何將字符串分解爲字符數組,以便我可以單獨分析和處理字符串中的每個字母?你可以將字符串分解爲C中的一個字符數組嗎?

實施例的類型代碼,而我將每個字母...

int 
main(int argc, char *argv[]) 
{ 
    printf("what is the string?: "); 
    string s = GetString(); 
    for(int i = 0; i<strlen(s); i++) 
    printf("s[i]"); 
    return(0); 
} 
+0

什麼是'GetString()'?你的意思是'gets()'?如果是,那麼C字符串已經*是一個char數組。如果's'是一個C字符串,則可以使用's [0]'到'[strlen(s) - 1]'。 – Imp

+1

C中的字符串?你能告訴我們'string'的定義嗎? – dirkgently

+0

注意「永遠不會*使用'gets0」「;) – paulsm4

回答

2

的字符串字符數組(一個額外的「\ 0」作爲陣列中的最後一個元素)。

#define MAXLEN 80 

int 
main(int argc, char *argv[]) 
{ 
    char buf[MAXLEN]; 
    printf("what is the string?: "); 
    fgets (buf, MAXLEN, stdin); 
    for(int i = 0; i<strlen(buff); i++) 
     printf("buff[%d]: %c\n", i, buf[i]); 
    return(0); 
} 

=====再舉一個例子=====

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

int 
main (int argc, char *argv[]) 
{ 
    int i; 
    char string[] = "ABC"; 

    for (i=0; i < strlen (string); i++) { 
    printf ("%c\n", string[i]); 
    } 

    return 0; 
} 

輸出樣本:

A 
B 
C 
+0

我很欣賞這個迴應,但是在編程時我太瞭解以上內容了。 – user1461215

+0

Q:什麼都不你明白嗎?我只是說一個「字符串」(我已經重命名爲「buf」,簡稱爲「緩衝區」)只是一個字符數組,如果你想訪問一個字符,可以使用「buf [i]」 。如果你想打印一個字符,在格式字符串中使用「%c」。 – paulsm4

0

在C中,一個字符串字符數組。

+0

s o在上面的例子中,我將如何評估(甚至只是打印)每個字母? 我正在使用允許字符串和GetString()的課程使用的類庫,輸入函數... – user1461215

0

一個字符串已經是一個字符數組,並且可以這樣處理。你可以用一個數組來處理任何數組,你可以用一個字符串來做,所以最好保持簡單並使用數組。除非你有一些你沒有提到的理由,但我想不出來。

+0

那麼如何在上面的例子中,我會評估(甚至只是打印)每個字母單獨? 我正在使用允許字符串和GetString()的課程使用的類庫,輸入函數... – user1461215

+0

在我的例子中,我用'printf(「%c」,buf [i])''單獨打印每個字母。 – paulsm4

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

typedef char* string; 

//input string from console stdin 
string GetString(){ 
    char buff[1024]; 
    int len; 
    fgets(buff, sizeof(buff), stdin); 
    len = strlen(buff); 
    if(buff[len-1] == '\n') 
     buff[len-1]='\0'; 
    return strdup(buff); 
} 

int 
main(int argc, char *argv[]) 
{ 
    printf("what is the string?: "); 
    string s = GetString(); 
    for(int i = 0; i<strlen(s); i++) 
     printf("s[%d]:%c\n", i, s[i]); 

    char ca[strlen(s)+1]; 
    for(int i = 0; i<=strlen(s); i++) 
     ca[i]=s[i]; 

    for(int i = 0; i<strlen(s); i++) 
     printf("ca[%d]:%c\n", i, ca[i]); 
    free(s); 
    return(0); 
} 
/* 
what is the string?: test 
s[0]:t 
s[1]:e 
s[2]:s 
s[3]:t 
ca[0]:t 
ca[1]:e 
ca[2]:s 
ca[3]:t 
*/ 
相關問題