Передача параметров из одного модуля в другой - C (СИ)
Формулировка задачи:
Привет, ребят. Есть два модуля operation.c и main.c. Из operations.c в main.c нужно передать три параметра. Вот то, что я наклепал.
это main.c
а вот сама функция из operations.c
case 8:
undo(&nword,&prev_word,slovo);
break;void undo(int nword,int prev_word,char *slovo) {
int i,j;
rs[line]=(unsigned char *)realloc(rs[line],strlen(rs[line])+n);
if(!rs)
{
printf("Ошибка перераспределения памяти");
}
strcat(rs[line],slovo);
for (i=prev_word;i<nword;i++)
{
rs[line][i]=slovo[i];
for (j=i;j<strlen(rs[line]);j++)
{
rs[line][j]=rs[line][j+1];
}
}
wr_text(xt,yt,xk,yk);
}
Забыл добавить, что параметры достаются из функции del
void del(int *prev_word,int *nword,char *slovo,shift)
{
char s2[100],slovo[400];
int i1,i,j,n;
int space;
i=0;strcpy(s2,"");
if (shift) {
while(i<strlen(rs[line]))
{
while(i<strlen(rs[line]) && rs[line][i]==' ')
i++;
if(i<strlen(rs[line]))//
{
*prev_word = i;
i1=i;//начало текущего слова
while((i<strlen(rs[line])) && rs[line][i]!=' ')i++;
*nword=i-i1;//длина текущего слова
strncpy(slovo,&rs[line][i1],*nword);//копируем текущее слово в
slovo[*nword]=' '; //поле slovo, добавляем пробел
slovo[*nword+1]='\0';//и символ '\0'.
strcat(s2,slovo);//Переписываем текущее слово в результирующую строку.
break;
}
}
leng=strlen(rs[line]);
if (leng==0)
return;
i=pos;
if (pos==' ')
pos++;
while (rs[line][i]!=' ')
i++;
space = i+1;
for(i=pos;i<space;i++)
{
for (j=pos;j<strlen(rs[line]);j++)
{
rs[line][j]=rs[line][j+1];
}
}
rs[line]=(unsigned char *)realloc(rs[line],leng);
wr_text(xt,yt,xk,yk);
}
else {
if (pos<strlen(rs[line])-1)
{
/*Если позиция в строке не последняя,
удаляем символы до конца строки (до последнего пробела)*/
leng=strlen(rs[line]);
for(i=pos;i<strlen(rs[line]);i++)
{
rs[line][i]=rs[line][i+1];
}
rs[line]=(unsigned char *)realloc(rs[line],leng);
wr_text(xt,yt,xk,yk);
}
else
{
if(line<n-1)
{
/*Если не последняя строка, сдвигаем все на одну вверх и соединяем текущую строку line со следующей*/
leng=strlen(rs[line]); /*Длина текущей строки*/
/*На место пробела в последней позиции строки заносим 0, необходимо для копирования*/
rs[line][pos]=rs[line][pos+1];
rs[line]=(unsigned char *)realloc(rs[line],leng+strlen(rs[line+1]));
if(!rs)
{
printf("Ошибка перераспределения памяти");
}
strcat(rs[line],rs[line+1]);
free(rs[line+1]);
if(line<n-2) /*Сдвигаем строки*/
{
for(i=line+1;i<n-1;i++)
{
rs[i]=rs[i+1];
}
}
n--; /*Уменьшаем количество строк*/
wr_text(xt,yt,xk,yk);
}
}
if(highlighting)
{
unmask(&xmask1,&ymask1,&xmask2,&ymask2,&overlap);
}
}
}Решение задачи: «Передача параметров из одного модуля в другой»
textual
Листинг программы
undo(&nword,&prev_word,slovo);