⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s_cat.c

📁 gcc-2.95.3 Linux下最常用的C编译器
💻 C
字号:
/* Unless compiled with -DNO_OVERWRITE, this variant of s_cat allows the * target of a concatenation to appear on its right-hand side (contrary * to the Fortran 77 Standard, but in accordance with Fortran 90). */#include "f2c.h"#ifndef NO_OVERWRITE#include <stdio.h>#undef abs#ifdef KR_headers extern char *F77_aloc(); extern void free(); extern void G77_exit_0 ();#else#undef min#undef max#include <stdlib.h> extern char *F77_aloc(ftnlen, char*);#endif#include <string.h>#endif /* NO_OVERWRITE */ VOID#ifdef KR_headerss_cat(lp, rpp, rnp, np, ll) char *lp, *rpp[]; ftnlen rnp[], *np, ll;#elses_cat(char *lp, char *rpp[], ftnlen rnp[], ftnlen *np, ftnlen ll)#endif{	ftnlen i, nc;	char *rp;	ftnlen n = *np;#ifndef NO_OVERWRITE	ftnlen L, m;	char *lp0, *lp1;	lp0 = 0;	lp1 = lp;	L = ll;	i = 0;	while(i < n) {		rp = rpp[i];		m = rnp[i++];		if (rp >= lp1 || rp + m <= lp) {			if ((L -= m) <= 0) {				n = i;				break;				}			lp1 += m;			continue;			}		lp0 = lp;		lp = lp1 = F77_aloc(L = ll, "s_cat");		break;		}	lp1 = lp;#endif /* NO_OVERWRITE */	for(i = 0 ; i < n ; ++i) {		nc = ll;		if(rnp[i] < nc)			nc = rnp[i];		ll -= nc;		rp = rpp[i];		while(--nc >= 0)			*lp++ = *rp++;		}	while(--ll >= 0)		*lp++ = ' ';#ifndef NO_OVERWRITE	if (lp0) {		memcpy(lp0, lp1, L);		free(lp1);		}#endif	}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -