online compiler and debugger for c/c++

code. compile. run. debug. share.
Source Code   
Language
#include<stdio.h> #include<stdlib.h> #include<memory.h> #include<assert.h> //任意类型的查找,elemsize指定单个元素的大小 int search(void* sour, void* targetElem, size_t sourLen, size_t elemsize) { assert(sour != NULL); void* elemTemp; for (int i = 0; i < sourLen; i++) { elemTemp =(char*)(sour)+i*elemsize;//获取第i个元素 if (memcmp(elemTemp, targetElem,elemsize) == 0) return i; } return -1; } //自定义比较函数 int searchByCmp(void* sour, void* targetElem, size_t sourLen, size_t elemsize, int (*cmpfun)(void*, void*)) { assert(sour != NULL); void* elemTemp; for (int i = 0; i < sourLen; i++) { elemTemp = (char*)sour+i*elemsize; if (cmpfun(elemTemp, targetElem)==0) return i; } return -1; } int cmpFunForStr(void* vp1, void* vp2) { char* s1 = *((char**)vp1);//这里获取值而非地址 char* s2 = *((char**)vp2); printf("s1:%s, s2:%s\n", s1, s2); return strcmp(s1,s2); } int main(int argc,char *argv[]){ int intArray[] = {4, 5}; int intTarget = 5; assert(search(intArray, &intTarget, 2, sizeof(intTarget)) == 1); printf("success for int\n"); double doubleArray[] = {1000.0, 2.0, 3.4, 7.0, 50.0}; double doubleTarget = 2.0; assert(search(doubleArray, &doubleTarget, 2, sizeof(doubleTarget)) == 1); printf("success for double\n"); char* strArray[] = {"hello", "world", "2023"}; char* strTarget = "world"; assert(searchByCmp(strArray, &strTarget, 3, sizeof(char *), cmpFunForStr) == 1); printf("end\n"); return 0; }

Compiling Program...

Command line arguments:
Standard Input: Interactive Console Text
×

                

                

Program is not being debugged. Click "Debug" button to start program in debug mode.

#FunctionFile:Line
VariableValue
RegisterValue
ExpressionValue