Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
3年前关闭。
好的,这是真实程序的相关部分,基本上该程序的作用是要求用户选择年份,然后在randLetters()函数中为每个月的每一天分配一个随机字母,然后必须找到字母“ K”有多少天。在结构中,char * fevereiro(february)是指针而不是数组,因为我需要计算need年。我上面发布的代码有效,但是我必须在2月
在
也就是说,当您分配内存,然后让
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
3年前关闭。
typedef struct
{
char janeiro[31];
char *fevereiro;
char marco[31];
char abril[30];
char maio[31];
char junho[30];
char julho[31];
char agosto[31];
char setembro[30];
char outubro[31];
char novembro[30];
char dezembro[31];
int mesSize[12] = { 31, 28, 31, 30, 31 , 30, 31, 31, 30 , 31, 30, 31 };
char *meses[12]={ janeiro, fevereiro, marco, abril, maio, junho, julho, agosto, setembro, outubro, novembro, dezembro };
} MESES;
int n_diasK(MESES *mes)
{
int i, j, counter=0;
for (i = 0; i < 12; i++)
{
for(j = 0; j < (mes->mesSize[i]) ; j++){
if (i == 1)
{
if (mes->fevereiro[j] == 'K');
counter++;
}
else if (mes->meses[i][j] == 'K' )
counter++;
}
}
return counter;
}
void menu()
{
MESES mes;
randLetters(year,&mes);
n_diasK(&mes);
}
好的,这是真实程序的相关部分,基本上该程序的作用是要求用户选择年份,然后在randLetters()函数中为每个月的每一天分配一个随机字母,然后必须找到字母“ K”有多少天。在结构中,char * fevereiro(february)是指针而不是数组,因为我需要计算need年。我上面发布的代码有效,但是我必须在2月
if(mes->fevereiro[j] == 'K')
中包含一个特殊情况,因为如果在没有此检查的情况下运行for循环,则在到达mes->meses[1][j] == 'K'
时会崩溃。 最佳答案
我相信问题在于此分配:
char *2Darray[2]={somearray, somepointer};
在
somepointer
的整个生命周期中,行为均不符合您的预期。也就是说,当您分配内存,然后让
somepointer
指向该内存时,2Darray[1]
仍然是一个char *,它指向其他位置。 somepointer
保持/指向结构初始化时的任何值将是2Darray[1]
中的值。07-23 22:34