所以我试图找到一种方法来更新一个变量,我试图让它成为全局变量,所以我可以轻松地进行更改。唯一的问题是它不工作,我不知道如何解决它。更改全局变量的值,C
我希望SIZE_ARRAY在每次调用remove_unimportant_words函数时都变为它变成的值。
Decleration:
int SIZE_ARRAY = 480;
char list[SIZE_ARRAY][MAX];
void remove_unimportant_words(char word[MAX], int SIZE_ARRAY, char list[SIZE_ARRAY][MAX] , int j, int i);
INT主要():
while (fscanf(file, "%s", word) != EOF){
remove_unimportant_words(word, SIZE_ARRAY, list, j, i);
}
功能:
void remove_unimportant_words(char word[MAX], int SIZE_ARRAY, char list[SIZE_ARRAY][MAX] , int j, int i)
{
for (i=0; i<SIZE_ARRAY; i++) {
if(strcmp(list[i],word) == 0){
for (j=i; j<SIZE_ARRAY; j++) {
strcpy(list[j], list[j+1]);
}
SIZE_ARRAY--;
i--;
}
}
printf("%d\n", SIZE_ARRAY);
}
我已经基本上ŧ打印SIZE_ARRAY的值,并且在进入该函数时总是从480开始。
请问你能解释一下这个void remove_unimportant_words(char word [MAX],int SIZE_ARRAY,char list [SIZE_ARRAY] [MAX],int j,int i );'? –
'remove_unimportant_words'函数中的'SIZE_ARRAY'是一个完全独立的变量;修改它不会修改全局变量。 –
您正在传递'SIZE_ARRAY'的副本,而不是全局的SIZE_ARRAY变量本身。将参考/指针传递给SIZE_ARRAY,或者直接从函数内部访问它。 – initramfs