コード例 #1
0
ファイル: hstring.c プロジェクト: ZZMarquis/LLServer
status hs_replace(hstring *pstr,hstring s1,hstring s2)
{   /* 初始条件: 串pstr, s1和s2存在,s1是非空串(此函数与串的存储结构无关) */
	/* 操作结果: 用s1替换主串pstr中出现的所有与s1相等的不重叠的子串 */
	int i=1; /* 从串S的第一个字符起查找串s1 */
	if(hs_empty(s1)) /* s1是空串 */
		return ERROR;
	do
	{
		i=hs_find(*pstr,s1,i); /* 结果i为从上一个i之后找到的子串T的位置 */
		if(i) /* 串pstr中存在串s1 */
		{
			hs_delete(pstr, i, hs_length(s1)); /* 删除该串s1 */
			hs_insert(pstr, i, s2); /* 在原串s1的位置插入串s2 */
			i += hs_length(s2); /* 在插入的串s2后面继续查找串s1 */
		}
	} while(i);
	return OK;
}
コード例 #2
0
static void deleteOneDHistCB(Widget w, nTuBrowserInfo *nTuBrDummy,
                               caddr_t call_data)
{
    int i, idPos, *posList, count, id, uid, jn;
    nTuBrowserInfo *nTuBr;
    nTuBroHs1D *nTuH1;
     
                                  
    if (!XmListGetSelectedPos(OneDHistHistoListW, &posList, &count)) {
	DialogF(DF_WARN, OneDHistShellW, 1, "Please select a Histogram",
		"Acknowledged");
	return;
    }
    id = OneDHistListedIDs[((*posList) -1)];
    CurrentHistoUID = hs_uid(id);
    nTuBr = oneDHistNTupleSource(id);
    if (nTuBr == NULL) {
         DialogF(DF_ERR, OneDHistShellW, 1,
                 "Internal Error in deleteOneDHist\nPlease report",
		"Acknowledged");
         return;
     }
    hs_delete(id);
    hs_update();
    for (i=0; i<nTuBr->sizeOfLists; i++) { 
       if (nTuBr->hsItemList[i] == NULL) continue;
        if (id == nTuBr->hsItemList[i]->id ) {
             nTuH1 = (nTuBroHs1D *) nTuBr->hsItemList[i];
             if (nTuH1->varIndices != NULL) free(nTuH1->varIndices);
             free(nTuH1);
             nTuBr->hsItemList[i] = NULL;       
             break;
         }
    }
    nTuBr->nHistoItems--;
    nTuBr->nHisto1D--;
    redisplay1DHistoList();
}