在下面的程序中,我尝试了数组、带有字符串的指针,但我不知道哪里出错了。
#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;
}发布于 2013-03-08 12:21:33
您的代码看起来可以处理单个字符串,但是您有一个由三个字符串组成的数组。您需要添加另一个循环来处理该数组上的迭代。
发布于 2013-03-08 12:32:08
字符串数组的一种常见用法是以空值结束数组。例如:
#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-08 12:41:29
char *arr_1[]是一个指向字符的指针数组。您必须遍历字符串数组,然后循环该字符串以获得每个单独的元素。
#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]。
https://stackoverflow.com/questions/15286641
复制相似问题