首页 文章

在字符串中存储元素的第一个字符[暂停]

提问于
浏览
0

如何将元素的第一个字符存储在字符串中?例如 . 如果我跑

for (j=0; j < 5; j++) {
    printf("%s\n, string[j]);
}

我明白了

hello
how
are
you

感谢@He提供的答案,我知道我可以运行 printf("%c\n, string[j][0]); 来打印第一个字母:

h
h
a
y

但是,如何将第一个字母存储在新数组中?到目前为止,我有:

char secondStr[10];

for (j=0; j<5; j++) {
    secondStr[j] = string[j][0];
}

这会导致错误 assignment makes pointer from integer without a cast

我知道这个问题与我之前提出的问题略有不同(关于打印第一个元素) - 我不确定是否要问一个关于SO的全新问题 . 如果我应该问一个新问题,我会提前道歉 .

3 回答

  • 3

    如果string是std :: string,那么:

    string s[6] = { "hello","how", "are", "you", "?" };
    
        for (int j = 0; j < 5; j++) 
        {
            if(s[j].size())
            printf("%c\n", s[j].c_str()[0]);
        }
    

    应该说 .

  • 0

    有很多选择 . 我只想提一些 .

    • 使用begin()
    for( int i = 0 ; i < num ; i++ )
    {
          string:: iterator it = String[i].begin();
          cout << *it;
    }
    
    • 使用前()
    for( int i = 0 ; i < num ; i++ )
    {
          cout << String[i].front();
    }
    
    • 在()使用
    for( int i = 0 ; i < num ; i++ )
    {
          cout << String[i].at();
    }
    

    您可以浏览字符串的成员函数并将其用于您的目的

  • 0

    当你有一个指向char *string1[] = {"hello", "how", "are", "you"}; 的指针数组并且你想要打印它的第一个字符串 hello 所以你必须使用 %s 作为字符串,如 printf("%s",string1[0]) 但如果你想打印第一个字符串的第一个字符串,你需要使用 %c 之类的这 printf("%c",string1[0][0]) .

    #include <stdio.h>
    
    int main()
    {
        char *string1[] = {"hello", "how", "are", "you"};
        printf("%s",string1[0][0]);  // I think you did this fault It'll give you Segmentation fault                                                                                                         
    
    
        return 0;
    }
    

    正如您在上面的代码中看到的那样,您需要使用 %c 重新发送 %s .

    编辑

    如果我想将第一个字母存储在新列表中该怎么办?

    然后,您将需要为新字符串分配内存 .

    #include <stdio.h>
    #include <stdlib.h>
    int main()
    {
        char *string1[] = {"hello", "how", "are", "you"};
        char **keep = calloc(sizeof(char*),5);    //memory allocating
    
        for (int index = 0; index <= 3; index++)
        {
            keep[index] = calloc(sizeof(char),2);     //memory allocating
            keep[index][0] = string1[index][0];         
        }
    
        //for test
        for (int i = 0; i <= 3; i++)
            printf("%c\n",keep[i][0]);
    
        return 0;
    }
    

相关问题