0

我在下面的程序中尝试了数组、带字符串的指针,但我不知道我哪里出错了。

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

3 回答 3

3

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

于 2013-03-08T04:21:33.370 回答
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;
}
于 2013-03-08T04:32:07.640 回答
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 as 的指针中的元素arr_1[i][j]

于 2013-03-08T04:41:28.737 回答