将字符数组拆分为字母数字和非字母数字字符

时间:2012-03-08 14:47:24

标签: c++ arrays

我只是一名学生,我想在c ++中了解这个数组。

如何显示阵列k上输入的所有字母数字字符到数组n 以及数组t上的所有非字母数字?

这就是我所做的,我不知道下一步是什么

int main(int argc, char *argv[])
{ 
   char k[8], n[8], t[8];

   int ctr, nctr, tctr;

   for(ctr=0; ctr<8; ctr++){ 
     cout << "Input 1st Element ";

     cin >> k[ctr];  
     if (isalnum(k[ctr]))

3 个答案:

答案 0 :(得分:0)

  

如何显示阵列k上输入的所有字母数字字符到数组n以及数组t上的所有非字母数字?

我假设&#34;显示&#34;你是说&#34;复制&#34;?只需使用条件:

int ctr, nctr = 0, tctr = 0;   // note how I explicitly set the counters to 0

for (ctr = 0; ctr < 8; ctr++)
{ 
    cout << "Input Element " << ctr << ": ";

    cin >> k[ctr];  
    if (isalnum(k[ctr]))
    {
        n[nctr++] = k[ctr];
    }
    else
    {
        t[tctr++] = k[ctr];
    }
}

如果这不是您想要的,请提供更多信息。

答案 1 :(得分:0)

#include <string.h>
#include <iostream>

using namespace std;

int main(void) {

        char k[8], n[8], t[8];

        strcpy(k,"--------");
        strcpy(n,"--------");
        strcpy(t,"--------");

    for (int pos = 0, tcntr = 0, ncntr =0; pos < 8; pos++) {
            cout<<"Input your char < : ";
            cin>>k[pos];

                if (isalnum(k[pos])) {
                        n[ncntr] = k[pos];
                        ncntr++;
                } else {

                        t[tcntr] = k[pos];
                        tcntr++;
                }
        }

        cout<<"Alpha numernic chars ::"<<n<<endl;
        cout<<"Non Aplha numberic chars ::"<<t<<endl;
}


Input your char < : 3
Input your char < : ^ 
Input your char < : d 
Input your char < : &
Input your char < : f
Input your char < : 1
Input your char < : 7
Input your char < : 1
Alpha numernic chars ::3df171--
Non Aplha numberic chars ::^&------

答案 2 :(得分:0)

如果允许使用STL,那么partition_copy是最佳解决方案。您可以通过检查给定的谓词(在您的情况下char是否为字母数字)将数组k拆分为两个数组nt。像这样:

#include <string>
#include <iostream>
#include <algorithm>

using namespace std;

int main(int argc, char *argv[])
{ 
  const size_t len = 8;
  char k[len], n[len], t[len];

  // Input your data...

  // Copy all alphanumeric chars in n and non-alphanumeric to t
  partition_copy(k, k + len, n, t, isalnum);
}