2013-03-08 21 views
0

我在下面的程序中尝试过数组,指向字符串的指针,但我不知道自己出错的地方。尝试使用数组和指针islower ...得到错误?

#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 

// finding out the uper case and lower case in a string 

int main() 
{ 
    char *arr_1[] = {"CalCulaTor", "DoveTail", "MachiNing"}; 
    int i = 0, j; 

    while(*(arr_1 + i) != '\0') 
    { 
     printf(" %d letter is %s ",i,islower(*(arr_1 + i)) ? "Lower case " : "Not lower case"); 
     printf("\n"); 
     i++; 
    } 

    system("PAUSE"); 

    return 0; 
} 

回答

3

您的代码看起来很好,可以处理单个字符串,但是您有一个由三个字符串组成的数组。您需要添加另一个循环来处理该数组的迭代。

+0

感谢您的建议...我设法得到它....我感谢您的努力..谢谢! – studyembedded 2013-03-08 04:25:43

0

字符串数组的一个常见习惯用法是用NULL终止数组。例如:

#include <stdio.h> 
#include <stdlib.h> 
#include <ctype.h> 

// finding out the uper case and lower case in a string 
char *arr_1[] = { 
    "CalCulaTor", "DoveTail", "MachiNing", NULL 
}; 

int main() 
{ 
    char **a = arr_1; 
    while(*a) 
    { 
     int i = 0; 
     char *c = *a; 
     printf ("%s:\n", c); 
     while (*c) { 
      printf(" %d letter(%c) is %s ", 
      i++, 
      *c, 
      (islower(*c) ? "Lower case " : "Not lower case")); 
      c++; 
     } 
     printf("\n"); 
     a++; 
    } 
    system("PAUSE"); 
    return 0; 
} 
+0

对不起我的朋友,但你在哪里定义数组[0]我认为你正在尝试分配arr_1?你可以请解释这段代码...这将帮助我学习更多的方式来做到这一点...谢谢 – studyembedded 2013-03-08 04:45:19

0

char *arr_1[]是指向char的指针数组。 您必须循环访问您的字符串数组,然后遍历该字符串以获取每个单独的元素。

#include <stdio.h> 
#include <ctype.h> 

int main(void) 
{ 
    char *arr_1[] = {"CalCulaTor", "DoveTail", "MachiNing"}; 
    size_t i, j; 

    for (i = 0; i < 3; i++) { 
     puts(arr_1[i]); 
     for (j = 0; arr_1[i][j]; j++) { 
      printf("'%d' element is %s.\n", j, islower(arr_1[i][j]) ? "Lowercase" : "Uppercase"); 
     } 
     putchar('\n'); 
    } 

    return 0; 
} 

第一个循环将得到您的字符串(这是为char的指针)作为arr_1[i]然后遍历与另一个变量会给你该指针元素为char作为arr_1[i][j]

+0

谢谢...这是最终的代码... ...所有的帮助我设法修复它。想在这里分享 – studyembedded 2013-03-08 05:25:47