关于指针数组 急!!!

来源:百度知道 编辑:UC知道 时间:2024/05/25 18:58:37
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
int main()
{
char *suit[4] = {"Hearts","Diamonds","Clubs","Spades"};
int i;
int j;
for(i=0;i<=3;i++){
for(j=0;(*suit[i]+j)!='\0;j++){
if(islower((*suit[i]+j))){
(*suit[i]+j) = toupper((*suit[i]+j));
}
printf("%c",*suit);
}
}
system("pause");
return 0;

}
为什么编译不通过

两个问题:
1.
for(j=0;(*suit[i]+j)!='\0;j++){
少了一个’
改为:
for(j=0;(*suit[i]+j)!='\0';j++){

2.
二维数组的值引用方法错误

改后:
#include<stdlib.h>
#include<stdio.h>
#include<ctype.h>
int main()
{
char *suit[4] = {"Hearts","Diamonds","Clubs","Spades"};
int i;
int j;
for(i=0;i<=3;i++){
for(j=0;*(suit[i]+j)!='\0';j++){
if(islower((*suit[i]+j))){
*(suit[i]+j) = toupper(*(suit[i]+j));
}
printf("%c",*suit);
}
}
system("pause");
return 0;

}

因为你这样初始化
char *suit[4] = {"Hearts","Diamonds","Clubs","Spades"};
将导致char *suit变为const char *suit 即:该指针是只读的指针,所以你下面的这行语句就会有错误:
(*suit[i]+j) = toupper((*suit[i]+j));
解决方法,更改数组的初始化方式为
char suit[4][20] = {"Hearts",