如何更改C函数中的全局变量?
我正在用C编写一个简单的文本编辑器。我必须将如何更改C函数中的全局变量?,c,pointers,variables,C,Pointers,Variables,我正在用C编写一个简单的文本编辑器。我必须将inuse\u head和free\u head定义为全局变量。我需要更改函数中两个全局变量的值。以下是我迄今为止编写的代码: #include <stdio.h> #include <string.h> struct node { char statement[40]; int next; }; struct node textbuffer[25]; int free_head; int inuse_hea
inuse\u head
和free\u head
定义为全局变量。我需要更改函数中两个全局变量的值。以下是我迄今为止编写的代码:
#include <stdio.h>
#include <string.h>
struct node
{
char statement[40];
int next;
};
struct node textbuffer[25];
int free_head;
int inuse_head;
void insert(int line, char* stat)
{
FILE *file;
file=fopen("deneme.txt","a");
if(file!=NULL)
{
int i;
int k;
strcpy(textbuffer[line].statement,stat);
textbuffer[line].next=line+1;
fprintf(file,textbuffer[line].statement);
for(i=0;i<=25;i++)
{
if(textbuffer[i].statement==NULL)
{
free_head=i;
break;
}
}
for(k=0;k<=25;k++)
{
if(textbuffer[k].statement!=NULL)
{
inuse_head=k;
break;
}
}
}
else
{
printf("File couldn't found.");
}
fclose(file);
}
int main()
{
insert(3,"Hello World");
printf("free list: %d and inuse list: %d",free_head,inuse_head);
return 0;
}
#包括
#包括
结构节点
{
char语句[40];
int-next;
};
结构节点textbuffer[25];
int自由头;
int inuse_头;
空插入(整数行,字符*stat)
{
文件*文件;
file=fopen(“deneme.txt”,“a”);
如果(文件!=NULL)
{
int i;
int k;
strcpy(textbuffer[line].语句,stat);
textbuffer[line].next=line+1;
fprintf(文件,textbuffer[line].语句);
对于(i=0;i这两个变量都有值0
的原因不是函数insert
访问这些变量时遇到问题。由于变量都是全局变量,函数insert
可以像任何其他变量一样直接访问这两个变量。因此,无需使用指针来访问这些变量这些变量
问题在于,在函数insert
中
free\u head=i;
永远不会被执行,而且
inuse\u head=k;
仅在k
的值为0
时执行一次
这就是为什么两个变量的值都不会改变它们的值,并且在整个程序中都保持它们的初始值0
另外,值得注意的是,您的程序已经。正如在注释部分中指出的,您正在访问数组textbuffer
越界
线路
for(i=0;i)在监视所有变量的值时,您是否已尝试在调试器中逐行运行代码,以确定程序在哪一点停止按预期运行?如果您没有尝试此操作,则可能需要阅读此内容:您可能还需要阅读此内容:。此代码在for中包含未定义的行为(i=0;它是if(textbuffer[i].statement==NULL)
永远不会为真。textbuffer[i].statement
是一个固定数组,它衰减为指针,而指针不是NULL
。你是说if(strcmp(textbuffer[i].statement,”)==0)
?