迭代字符串的最佳方法 [英] best way to iterate through string

查看:99
本文介绍了迭代字符串的最佳方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是C的新手,我想迭代用户输入的char数组,并根据循环当前所在的字母打印不同的预定义变量。



现在我有:

 printf( 请输入您的姓名:); 
scanf( %20 [0-9a-zA-Z],nameVal) ;
printf( \ n);

for (i = 0 ; nameVal [i]!= ' \ 0'; i ++){





我的if语句会是什么样子?



我基本上想说如果nameVal中的当前字母是a,打印字符A



提前谢谢。

解决方案

好吧,你可以试试:

  for (i =  0 ; nameVal [i]!= '  \ 0'; i ++)
{
if (nameVal [i ] == ' a')printf( A);
if (nameVal [i] == ' b')printf( B);
...
}

或者更好:

  for (i =  0 ; nameVal [i]!= '  \0'; i ++)
{
switch (nameVal [i])
{
case ' a'
printf( A);
break ;
case ' b'
printf( B);
break ;
...
}
}



但是......这可能会更好:

< pre lang =cs> for (i = 0 ; nameVal [i]!= ' \0'; i ++)
{
if ((nameVal [i] > = ' a')&&(nameVal [i] < = ' z'))
printf( %c,nameVal [i] +(' A' - ' a'));
}


I am new to C, and I want to iterate through a char array inputted by the user, and print a different predefined variable depending on which letter the loop is currently on.

Right now I have:

printf("Please enter your name: ");
scanf("%20[0-9a-zA-Z ]", nameVal);
printf("\n");

for (i = 0; nameVal[i] != '\0'; i++) {



What would my if statement look like?

I basically want to say "if the current letter in nameVal is "a", print char A"

Thanks in advance.

解决方案

Well, you could try:

for (i = 0; nameVal[i] != '\0'; i++) 
   {
   if (nameVal[i] == 'a') printf("A");
   if (nameVal[i] == 'b') printf("B");
...
   }

Or better:

for (i = 0; nameVal[i] != '\0'; i++)
   {
   switch(nameVal[i])
      {
      case 'a':
         printf("A");
         break;
      case 'b':
         printf("B");
         break;
...
      }
   }


But...this may be better:

for (i = 0; nameVal[i] != '\0'; i++)
   {
   if ((nameVal[i] >= 'a') && (nameVal[i] <= 'z'))
       printf("%c", nameVal[i] + ('A' - 'a'));
   }


这篇关于迭代字符串的最佳方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆