-2

文字列内の各文字を個別に分析して操作できるように、文字列を文字の配列に分解するにはどうすればよいですか?

タイプコードの例。i は各文字になります...

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);
}
4

4 に答える 4

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);
}

===== もう1つの例 =====

#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
于 2012-06-16T23:28:49.680 に答える
0

文字列はすでに文字の配列であり、すでにそのように扱うことができます。配列でできることはすべて文字列でできるので、単純にして配列だけを使用するのが最善です。あなたが言及していない何らかの理由がない限り、私には思いつきません。

于 2012-06-16T23:31:59.540 に答える
0

c では、文字列文字の配列です。

于 2012-06-16T23:29:01.103 に答える
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
*/
于 2012-06-17T23:36:08.757 に答える