您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ strncpy函数代码示例

51自学网 2021-06-03 08:31:28
  C++
这篇教程C++ strncpy函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中strncpy函数的典型用法代码示例。如果您正苦于以下问题:C++ strncpy函数的具体用法?C++ strncpy怎么用?C++ strncpy使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了strncpy函数的29个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: ptpdStartup

//.........这里部分代码省略.........    case 'd':#ifndef PTPD_DBG      rtOpts->displayStats = TRUE;#endif      break;          case 'D':#ifndef PTPD_DBG      rtOpts->displayStats = TRUE;      rtOpts->csvStats = TRUE;#endif      break;          case 'x':      rtOpts->noResetClock = TRUE;      break;          case 't':      rtOpts->noAdjust = TRUE;      break;          case 'a':      rtOpts->ap = strtol(optarg, &optarg, 0);      if(optarg[0])        rtOpts->ai = strtol(optarg+1, 0, 0);      break;          case 'w':      rtOpts->s = strtol(optarg, &optarg, 0);      break;          case 'b':      memset(rtOpts->ifaceName, 0, IFACE_NAME_LENGTH);      strncpy(rtOpts->ifaceName, optarg, IFACE_NAME_LENGTH);      break;          case 'u':      strncpy(rtOpts->unicastAddress, optarg, NET_ADDRESS_LENGTH);      break;          case 'l':      rtOpts->inboundLatency.nanoseconds = strtol(optarg, &optarg, 0);      if(optarg[0])        rtOpts->outboundLatency.nanoseconds = strtol(optarg+1, 0, 0);      break;          case 'o':      rtOpts->currentUtcOffset = strtol(optarg, &optarg, 0);      break;          case 'e':      rtOpts->epochNumber = strtoul(optarg, &optarg, 0);      break;          case 'h':      rtOpts->halfEpoch = TRUE;      break;          case 'y':      rtOpts->syncInterval = strtol(optarg, 0, 0);      break;          case 'm':      rtOpts->max_foreign_records = strtol(optarg, 0, 0);      if(rtOpts->max_foreign_records < 1)        rtOpts->max_foreign_records = 1;
开发者ID:Pedersen175,项目名称:BitsPTP,代码行数:67,


示例2: main

/** main function * /param argc ? * /param argv ? * /return 0*/intmain(int argc, char **argv){     int i;     char *ol = "csgVS";     extern char *optarg;     extern int optind;     struct sigaction sa;     argv_global  = xstrdup(argv[0]);     all_argv = argv;     sprintf(conf.confpath, "%s/"DEF_CONF, getenv("HOME"));     while((i = getopt(argc, argv, "hviSc:s:g:C:V:")) != -1)     {          /* For options who need WMFS running */          if(strchr(ol, i) && !(dpy = XOpenDisplay(NULL)))               errx(EXIT_FAILURE, "cannot open X server.");          switch(i)          {          case 'h':          default:               printf("usage: %s [-ihvS] [-C <file>] [-c <uicb function> <cmd> ] [-g <argument>] [-s <screen_num> <string>] [-V <viwmfs cmd]/n"                      "   -C <file>                 Load a configuration file/n"                      "   -c <uicb_function> <cmd>  Execute an uicb function to control WMFS/n"                      "   -g <argument>             Show information about wmfs status/n"                      "   -s <screen_num> <string>  Set the bar(s) statustext/n"                      "   -V <viwmfs cmd>           Manage WMFS with vi-like command/n"                      "   -S                        Update status script/n"                      "   -h                        Show this page/n"                      "   -i                        Show informations/n"                      "   -v                        Show WMFS version/n", argv[0]);               exit(EXIT_SUCCESS);               break;          case 'i':               printf("WMFS - Window Manager From Scratch By Martin Duquesnoy/n");               exit(EXIT_SUCCESS);               break;          case 'v':               printf("WMFS "WMFS_VERSION"/n");               exit(EXIT_SUCCESS);               break;          case 'S':               update_status();               XCloseDisplay(dpy);               exit(EXIT_SUCCESS);               break;          case 'C':               strncpy(conf.confpath, optarg, sizeof(conf.confpath));               break;          case 'c':               exec_uicb_function(optarg, argv[optind]);               XCloseDisplay(dpy);               exit(EXIT_SUCCESS);               break;          case 's':               if(argc > 3)                    set_statustext(atoi(optarg), argv[3]);               else                    set_statustext(-1, optarg);               XCloseDisplay(dpy);               exit(EXIT_SUCCESS);               break;          case 'g':               getinfo(optarg);               XCloseDisplay(dpy);               exit(EXIT_SUCCESS);               break;          case 'V':               viwmfs(argc, argv);               XCloseDisplay(dpy);               exit(EXIT_SUCCESS);               break;          }     }     /* Check if WMFS can open X server */     if(!(dpy = XOpenDisplay(NULL)))          errx(EXIT_FAILURE, "cannot open X server.");     /* Set signal handler */     memset(&sa, 0, sizeof(sa));     sa.sa_handler = signal_handle;     sigemptyset(&sa.sa_mask);     sigaction(SIGQUIT, &sa, NULL);     sigaction(SIGTERM, &sa, NULL);//.........这里部分代码省略.........
开发者ID:wavebeem,项目名称:wmfs,代码行数:101,


示例3: parse_wiggle_format_line

static void parse_wiggle_format_line(WIGGLE_READER_T *reader, const char *line) {  reader->format = INVALID_FMT;  int status = regexec(    &fixed_format_regex,    line,    NUM_MATCHES,    matches,    0  );  if (!status) {    reader->format = FIXED_WIGGLE_FMT;  }  else if (status != REG_NOMATCH ) {    regerror(status, &fixed_format_regex, error_message, ERROR_MESSAGE_SIZE);    die(      "Error checking for fixed step wiggle file: %s/n"      "error message is %s/n",      reader->filename,       error_message    );  }  else {    status = regexec(&var_format_regex, line, NUM_MATCHES, matches, 0);    if (!status) {      reader->format = VAR_WIGGLE_FMT;    }    else if (status != REG_NOMATCH ) {      regerror(status, &var_format_regex, error_message, ERROR_MESSAGE_SIZE);      die(        "Error checking for variable step wiggle file: %s/n"        "error message is %s/n",        reader->filename,         error_message      );    }  }  if (reader->format == FIXED_WIGGLE_FMT) {    const int CHROM_GROUP = 1;    int len = matches[CHROM_GROUP].rm_eo - matches[CHROM_GROUP].rm_so;    catch_match_too_long(len, line, reader->filename);    myfree(reader->chrom);    reader->chrom = mm_malloc(len + 1);    char *last       = strncpy(reader->chrom, line + matches[CHROM_GROUP].rm_so, len) + len;    *last = 0; // Terminate string    const int START_GROUP = 2;    len = matches[START_GROUP].rm_eo - matches[START_GROUP].rm_so;    catch_match_too_long(len, line, reader->filename);    last = strncpy(buffer, line + matches[START_GROUP].rm_so, len) + len;    *last = 0; // Terminate string    reader->start = strtod(buffer, NULL);    const int STEP_GROUP = 3;    len = matches[STEP_GROUP].rm_eo - matches[STEP_GROUP].rm_so;    catch_match_too_long(len, line, reader->filename);    last = strncpy(buffer, line + matches[STEP_GROUP].rm_so, len) + len;    *last = 0; // Terminate string    reader->step = strtod(buffer, NULL);    // Optional match, may not be present    const int SPAN_GROUP = 5;    len = matches[SPAN_GROUP].rm_eo - matches[SPAN_GROUP].rm_so;    if (len > 0) {      catch_match_too_long(len, line, reader->filename);      last = strncpy(buffer, line + matches[SPAN_GROUP].rm_so, len) + len;      *last = 0; // Terminate string      reader->span = strtod(buffer, NULL);    }  }  else if (reader->format == VAR_WIGGLE_FMT) {    const int CHROM_GROUP = 1;    int len = matches[CHROM_GROUP].rm_eo - matches[CHROM_GROUP].rm_so;    catch_match_too_long(len, line, reader->filename);    // Check if chromosome has changed since last call.    if (reader->chrom == NULL         || strncmp(reader->chrom, line + matches[CHROM_GROUP].rm_so, len) != 0) {      myfree(reader->chrom);      reader->chrom = mm_malloc(len + 1);    }    char *last       = strncpy(reader->chrom, line + matches[CHROM_GROUP].rm_so, len) + len;    *last = 0; // Terminate string    // Optional match, may not be present    const int SPAN_GROUP = 3;    len = matches[SPAN_GROUP].rm_eo - matches[SPAN_GROUP].rm_so;    if (len > 0) {      catch_match_too_long(len, line, reader->filename);      last = strncpy(buffer, line + matches[SPAN_GROUP].rm_so, len) + len;      *last = 0; // Terminate string      reader->span = strtod(buffer, NULL);    }  }  else {    die(      "Unable to determine type of wiggle format in %s./n",      reader->filename    );  }}
开发者ID:a1aks,项目名称:Haystack,代码行数:99,


示例4: _tmain

//.........这里部分代码省略.........		printf("/n%s ", gszProcName);        arg_print_syntax(stdout,argtable,"/n");        arg_print_glossary(stdout,argtable,"  %-25s %s/n");		printf("/nNote: Parameters can be entered into a parameter file, one parameter per line.");		printf("/n      To invoke this parameter file then precede its name with '@'");		printf("/n      e.g. %s @myparams.txt/n/n",gszProcName);		exit(1);        }    /* special case: '--version' takes precedence error reporting */ if (version->count > 0)        {		printf("/n%s Version %d.%2.2d",gszProcName,cProgVer/100,cProgVer%100);		exit(1);        }if (!argerrors)	{	if(FileLogLevel->count && !LogFile->count)		{		printf("/nError: FileLogLevel '-f%d' specified but no logfile '-F<logfile>'",FileLogLevel->ival[0]);		exit(1);		}	iScreenLogLevel = iFileLogLevel = FileLogLevel->count ? FileLogLevel->ival[0] : eDLInfo;	if(iFileLogLevel < eDLNone || iFileLogLevel > eDLDebug)		{		printf("/nError: FileLogLevel '-l%d' specified outside of range %d..%d",iFileLogLevel,eDLNone,eDLDebug);		exit(1);		}		if(LogFile->count)		{		strncpy(szLogFile,LogFile->filename[0],_MAX_PATH);		szLogFile[_MAX_PATH-1] = '/0';		}	else		{		iFileLogLevel = eDLNone;		szLogFile[0] = '/0';		}	PMode = (etPMode)(pmode->count ? pmode->ival[0] : 0);	if(PMode < 0 || PMode >= ePMplaceholder)		{		printf("/nError: Processing mode '-m%d' specified outside of range %d..%d",PMode,0,(int)ePMplaceholder-1);		exit(1);		}	FMode = (etFMode)(format->count ? format->ival[0] : eFMbedGraphDyads);	if(FMode < eFMbedGraphDyads || FMode >= eFMplaceholder)		{		printf("/nError: Output format mode '-m%d' specified outside of range %d..%d",FMode,eFMbedGraphDyads,(int)eFMplaceholder-1);		exit(1);		}		MovAvgFilter = movavgfilter->count ? movavgfilter->ival[0] : 10;	if(MovAvgFilter != 0 && (MovAvgFilter < 5 || MovAvgFilter > 100))		{		printf("/nError: Moving average filter width '-a%d' specified outside of range 0 or 5..100",MovAvgFilter);		exit(1);		}	BaselineFilter = baselinefilter->count ? baselinefilter->ival[0] : 250;	if(BaselineFilter != 0 && (BaselineFilter < 25 || MovAvgFilter > 5000))
开发者ID:ste69r,项目名称:Biokanga,代码行数:67,


示例5: generateCodeTable

/** Reads the opcode list and generates output code based on the spec */void generateCodeTable (FILE *opcodes, FILE *code){	char line[MAX_LINE];	char last[MAX_LINE];	char tmp[MAX_LINE];	char name[MAX_LINE];	char parm[5], subst[20];	int i;	char *p, *q;	char **cmds;	regmatch_t matches[MAX_MATCH];	Item *item;	printf("Generating opcode implementations...");	last[0] = 0;	do	{					fgets(line, MAX_LINE, opcodes);		trim(line);				if (feof(opcodes))			break;						for (q = line, p = q+OPCODE_OFFSET; *p; *q++ = *p++);	/* Skip the hex part */		*q = 0;				/* Avoid duplicate opcodes */		if (strcmp(last, line) == 0)			continue;				strcpy(last, line);					/* Find the appropriate pattern */		for (i = 0; i < nItems; i++)		{			if (regexec(&items[i].re, line, MAX_MATCH, matches, REG_EXTENDED) == 0)			{					if (matches[0].rm_so == 0 && matches[0].rm_eo == strlen(line))	/* Match only entire line (fixes problem with INC HL being matched to INC H */				{					/*printf("%s : match %s/n", &line, items[i].pat);*/					break;				}			}		}				if (i >= nItems)        {			fatal2(line, " didn't match anything");            continue;        }					item = &items[i];				/* Print function stub */		fixName(line, name);        fprintf(code, "void Z80CPU::%s ()/n{/n", name);						/* Substitute submatches in each output line and print the code */		cmds = item->line;		strcpy(parm, "%0");		while (*cmds)		{			if (!printCall(*cmds, code))			{				strncpy(tmp, *cmds, MAX_LINE);				q = tmp;						for (i = 1; i < MAX_MATCH; i++)				{					parm[1] = i + '0';					strncpy(subst, &line[matches[i].rm_so], matches[i].rm_eo - matches[i].rm_so);					subst[matches[i].rm_eo - matches[i].rm_so] = 0;										substStr(tmp, parm, subst);				}				fprintf(code, "%s/n", tmp);			}						cmds++;			}				fprintf(code, "}/n/n/n");	} while(1);	printf("done/n");}
开发者ID:dgchurchill,项目名称:nanowasp,代码行数:85,


示例6: InitializeKeyStrings

void InitializeKeyStrings(){    print("Initializing key strings..");    for(int keyCode = 0; keyCode < KEY::KEY_AMOUNT; ++keyCode)    {        if(keyCode >= KEY::A && keyCode <= KEY::Z) {            char key[2];            key[0] = char('A' + keyCode - KEY::A);            key[1] = '/0';            strncpy(keyString[keyCode], key, 16);        }        else if(keyCode >= KEY::a && keyCode <= KEY::z) {            char key[2];            key[0] = char('a' + keyCode - KEY::a);            key[1] = '/0';            strncpy(keyString[keyCode], key, 16);        }        else if(keyCode >= KEY::F1 && keyCode <= KEY::F12) {            char key[4];            key[0] = 'F';            int index = 1;            if(keyCode >= KEY::F10) {                key[index++] = '1';                key[index++] = char('0' + keyCode - KEY::F10);            }            else                key[index++] = char('1' + keyCode - KEY::F1);            key[index++] = '/0';            strncpy(keyString[keyCode], key, 16);        }        else        {            switch(keyCode)            {            case KEY::NULL_KEY:                strncpy(keyString[keyCode], "NULL_KEY",     16);                break;            case KEY::Zero:                strncpy(keyString[keyCode], "Zero",         16);                break;            case KEY::One:                strncpy(keyString[keyCode], "One",          16);                break;            case KEY::Two:                strncpy(keyString[keyCode], "Two",          16);                break;            case KEY::Three:                strncpy(keyString[keyCode], "Three",        16);                break;            case KEY::Four:                strncpy(keyString[keyCode], "Four",         16);                break;            case KEY::Five:                strncpy(keyString[keyCode], "Five",         16);                break;            case KEY::Six:                strncpy(keyString[keyCode], "Six",          16);                break;            case KEY::Seven:                strncpy(keyString[keyCode], "Seven",        16);                break;            case KEY::Eight:                strncpy(keyString[keyCode], "Eight",        16);                break;            case KEY::Nine:                strncpy(keyString[keyCode], "Nine",         16);                break;            case KEY::Enter:                strncpy(keyString[keyCode], "Enter",        16);                break;            case KEY::Space:                strncpy(keyString[keyCode], "Space",        16);                break;            case KEY::Control:                strncpy(keyString[keyCode], "Control",      16);                break;            case KEY::Shift:                strncpy(keyString[keyCode], "Shift",        16);                break;            case KEY::Escape:                strncpy(keyString[keyCode], "Escape",       16);                break;            case KEY::Alt:                strncpy(keyString[keyCode], "Alt",          16);                break;            case KEY::Tab:                strncpy(keyString[keyCode], "Tab",          16);                break;            case KEY::Backspace:                strncpy(keyString[keyCode], "Backspace",    16);                break;            case KEY::Plus:                strncpy(keyString[keyCode], "Plus",         16);                break;            case KEY::Minus:                strncpy(keyString[keyCode], "Minus",        16);                break;//.........这里部分代码省略.........
开发者ID:Blankycan,项目名称:spaceinvaders,代码行数:101,


示例7: strlen

const char *disambiguate_h(SourceFile *sourcefile) {  char *p, *pe, *bof;  int length;  // If the directory contains a matching *.m file, likely Objective C.  length = strlen(sourcefile->filename);  if (strcmp(sourcefile->ext, "h") == 0) {    char path[length];    strncpy(path, sourcefile->filename, length);    path[length] = '/0';    *(path + length - 1) = 'm';    char **filenames = sourcefile->filenames;    if (filenames) {      int i;      for (i = 0; filenames[i] != NULL; i++)        if (strcmp(path, filenames[i]) == 0)          return LANG_OBJECTIVE_C;    }  }  // Attempt to detect based on file contents.  char line[81], buf[81];  bof = ohcount_sourcefile_get_contents(sourcefile);  p = bof;  pe = p;  char *eof = p + ohcount_sourcefile_get_contents_size(sourcefile);  while (pe < eof) {    // Get a line at a time.    while (pe < eof && *pe != '/r' && *pe != '/n') pe++;    length = (pe - p <= sizeof(line)) ? pe - p : sizeof(line);    strncpy(line, p, length);    line[length] = '/0';    char *eol = line + strlen(line);    char *line_end = pe;    // Look for C++ headers.    if (*line == '#') {      p = line + 1;      while (*p == ' ' || *p == '/t') p++;      if (strncmp(p, "include", 7) == 0 &&          (*(p + 7) == ' ' || *(p + 7) == '/t')) {        // /^#/s*include/s+[<"][^>"]+[>"]/        p += 8;        while (*p == ' ' || *p == '/t') p++;        if (*p == '<' || *p == '"') {          // Is the header file a C++ header file?          p++;          pe = p;          while (pe < eol && *pe != '>' && *pe != '"') pe++;          length = pe - p;          strncpy(buf, p, length);          buf[length] = '/0';          if (ohcount_hash_is_cppheader(buf, length))            return LANG_CPP;          // Is the extension for the header file a C++ file?          p = pe;          while (p > line && *(p - 1) != '.') p--;          length = pe - p;          strncpy(buf, p, length);          buf[length] = '/0';          struct ExtensionMap *re = ohcount_hash_language_from_ext(buf, length);          if (re && strcmp(re->value, LANG_CPP) == 0)            return LANG_CPP;        }      }    }    // Look for C++ keywords.    p = line;    while (p < eol) {      if (islower(*p) && p != bof && !isalnum(*(p - 1)) && *(p - 1) != '_') {        pe = p;        while (islower(*pe)) pe++;        if (!isalnum(*pe) && *pe != '_') {          length = pe - p;          strncpy(buf, p, length);          buf[length] = '/0';          if (strcmp(buf, "class") == 0 ||              strcmp(buf, "namespace") == 0 ||              strcmp(buf, "template") == 0 ||              strcmp(buf, "typename") == 0)            return LANG_CPP;        }        p = pe + 1;      } else p++;    }    // Next line.    pe = line_end;    while (*pe == '/r' || *pe == '/n') pe++;    p = pe;  }  // Nothing to suggest C++.  return LANG_C;}
开发者ID:Alwahsh,项目名称:ohcount,代码行数:96,


示例8: main

int main(void){        int server_Socket, accept_Socket;    unsigned int length, count;    struct sockaddr_in server_Struct, client_Struct;    char got_charachter[1000];    char web_Site[]="HTTP/1.1 200 OK/r/n/r/n";    unsigned short int port_No=5000;    char *position_of_GET,*position_of_HTTP;    char nameof_File[100];        server_Socket=socket(AF_INET,SOCK_STREAM,0);            server_Struct.sin_family=AF_INET;    server_Struct.sin_addr.s_addr=htonl(INADDR_ANY);    server_Struct.sin_port=htons(port_No);    length=sizeof(server_Struct);           printf("/n Server is now binding....");    bind(server_Socket,(struct sockaddr *)&server_Struct,length);       printf("/n Server listen....");    //printf("/n Server mit IP %s on port %d ",ip_Adress,port_No);    listen(server_Socket,5);        while(1){                printf("/n Server accept.....");        fflush(stdout);        accept_Socket=accept(server_Socket,(struct sockaddr *)&client_Struct, &length);              printf(" connected to %s",inet_ntoa(client_Struct.sin_addr));                count=read(accept_Socket,got_charachter,sizeof(got_charachter));        got_charachter[count]=0;        printf("server got the charachters %s",got_charachter);                       if(position_of_GET=strstr(got_charachter,"GET"))       {         printf("/n GET command start at char %ld/n/n",(position_of_GET-got_charachter)+1);              if(position_of_HTTP=strstr(got_charachter,"HTTP"))              {                printf("/n GET command start at char %ld/n/n",(position_of_HTTP-got_charachter)+1);                length=position_of_HTTP-position_of_GET-6;                strncpy(nameof_File,position_of_GET+4,length+1);                nameof_File[length+1]=0;                printf("/n The name of File you asked for %s is not available at this moment",nameof_File);              }                else              {                      printf("/n HTTP has no HTTP /n/n");              }       }       else       {           printf("/n HTTP has no GET /n/n");       }              printf("/n/n/n");        write(accept_Socket,web_Site,sizeof(web_Site));        printf("/n/n server close()....");        close(accept_Socket);                                }                    return (0);}
开发者ID:nawicool,项目名称:Sockets,代码行数:77,


示例9: check_content_type_and_change_protocol

static void check_content_type_and_change_protocol(struct ndpi_detection_module_struct						   *ndpi_struct, struct ndpi_flow_struct *flow){#ifdef NDPI_PROTOCOL_MPEG  struct ndpi_packet_struct *packet = &flow->packet;#endif#ifdef NDPI_PROTOCOL_AVI#endif  //      struct ndpi_id_struct         *src=ndpi_struct->src;  //      struct ndpi_id_struct         *dst=ndpi_struct->dst;  u_int8_t a;  if (packet->content_line.ptr != NULL && packet->content_line.len != 0) {    NDPI_LOG(NDPI_PROTOCOL_HTTP, ndpi_struct, NDPI_LOG_DEBUG, "Content Type Line found %.*s/n",	    packet->content_line.len, packet->content_line.ptr);#ifdef NDPI_PROTOCOL_MPEG    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_MPEG) != 0)      mpeg_parse_packet_contentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_FLASH    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_FLASH) != 0)      flash_parse_packet_contentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_QUICKTIME    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_QUICKTIME) != 0)      qt_parse_packet_contentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_REALMEDIA    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_REALMEDIA) != 0)      realmedia_parse_packet_contentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_WINDOWSMEDIA    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_WINDOWSMEDIA) != 0)      windowsmedia_parse_packet_contentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_MMS    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_MMS) != 0)      mms_parse_packet_contentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_OFF    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_OFF) != 0)      off_parse_packet_contentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_OGG    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_OGG) != 0)      ogg_parse_packet_contentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_MOVE    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_MOVE) != 0)      move_parse_packet_contentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_WEBM    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_WEBM) != 0)      webm_parse_packet_contentline(ndpi_struct, flow);#endif  }  /* check user agent here too */  if (packet->user_agent_line.ptr != NULL && packet->user_agent_line.len != 0) {    NDPI_LOG(NDPI_PROTOCOL_HTTP, ndpi_struct, NDPI_LOG_DEBUG, "User Agent Type Line found %.*s/n",	    packet->user_agent_line.len, packet->user_agent_line.ptr);#ifdef NDPI_PROTOCOL_XBOX    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_XBOX) != 0)      xbox_parse_packet_useragentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_WINDOWS_UPDATE        if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_WINDOWS_UPDATE) != 0)      windows_update_packet_useragentline(ndpi_struct, flow);#endif#ifdef NDPI_PROTOCOL_WINDOWSMEDIA    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_WINDOWSMEDIA) != 0)      winmedia_parse_packet_useragentline(ndpi_struct, flow);#endif  }  /* check for host line */  if (packet->host_line.ptr != NULL) {    u_int len;    NDPI_LOG(NDPI_PROTOCOL_HTTP, ndpi_struct, NDPI_LOG_DEBUG, "HOST Line found %.*s/n",	    packet->host_line.len, packet->host_line.ptr);#ifdef NDPI_PROTOCOL_QQ    if (NDPI_COMPARE_PROTOCOL_TO_BITMASK(ndpi_struct->detection_bitmask, NDPI_PROTOCOL_QQ) != 0) {      qq_parse_packet_URL_and_hostname(ndpi_struct, flow);    }#endif    /* Copy result for nDPI apps */    len = ndpi_min(packet->host_line.len, sizeof(flow->host_server_name)-1);    strncpy((char*)flow->host_server_name, (char*)packet->host_line.ptr, len);    flow->host_server_name[len] = '/0';    parseHttpSubprotocol(ndpi_struct, flow);        if(packet->detected_protocol_stack[0] != NDPI_PROTOCOL_HTTP) {      ndpi_int_http_add_connection(ndpi_struct, flow, packet->detected_protocol_stack[0]);      return; /* We have identified a sub-protocol so we're done */    }  }   //.........这里部分代码省略.........
开发者ID:aoshiken,项目名称:ndpi,代码行数:101,


示例10: RegisterCListFonts

void RegisterCListFonts(){	FontIDT fontid = {0};	ColourIDT colourid = {0};	char idstr[10];	int i;	fontid.cbSize = sizeof(FontIDT);	fontid.flags = FIDF_ALLOWREREGISTER | FIDF_APPENDNAME | FIDF_NOAS | FIDF_SAVEPOINTSIZE | FIDF_ALLOWEFFECTS;	for (i = 0; i <= CLIST_FONTID_MAX; i++) {		switch (fontListOrder[i])		{		case FONTID_GROUPS:		case FONTID_GROUPCOUNTS:			fontid.flags &= ~FIDF_CLASSMASK;			fontid.flags |= FIDF_CLASSHEADER;			break;		case FONTID_DIVIDERS:			fontid.flags &= ~FIDF_CLASSMASK;			fontid.flags |= FIDF_CLASSSMALL;			break;		default:			fontid.flags &= ~FIDF_CLASSMASK;			fontid.flags |= FIDF_CLASSGENERAL;			break;		}		strncpy(fontid.dbSettingsGroup, "CLC", sizeof(fontid.dbSettingsGroup));		_tcsncpy(fontid.group, _T("Contact List"), SIZEOF(fontid.group));		_tcsncpy(fontid.name, szClistFontIdDescr[fontListOrder[i]], SIZEOF(fontid.name));		sprintf(idstr, "Font%d", fontListOrder[i]);		strncpy(fontid.prefix, idstr, SIZEOF(fontid.prefix));		fontid.order = fontListOrder[i];		CallService(MS_FONT_REGISTERT, (WPARAM)&fontid, 0);	}	// and colours	colourid.cbSize = sizeof(ColourIDT);	colourid.order = 0;	strncpy(colourid.dbSettingsGroup, "CLC", sizeof(colourid.dbSettingsGroup));	strncpy(colourid.setting, "BkColour", sizeof(colourid.setting));	_tcsncpy(colourid.name, LPGENT("Background"), SIZEOF(colourid.name));	_tcsncpy(colourid.group, LPGENT("Contact List"), SIZEOF(colourid.group));	colourid.defcolour = CLCDEFAULT_BKCOLOUR;	CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourid, 0);	strncpy(colourid.setting, "SelTextColour", sizeof(colourid.setting));	_tcsncpy(colourid.name, LPGENT("Selected Text"), SIZEOF(colourid.name));	colourid.order = 1;	colourid.defcolour = CLCDEFAULT_SELTEXTCOLOUR;	CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourid, 0);	strncpy(colourid.setting, "HotTextColour", sizeof(colourid.setting));	_tcsncpy(colourid.name, LPGENT("Hottrack Text"), SIZEOF(colourid.name));	colourid.order = 1;	colourid.defcolour = CLCDEFAULT_HOTTEXTCOLOUR;	CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourid, 0);	strncpy(colourid.setting, "QuickSearchColour", sizeof(colourid.setting));	_tcsncpy(colourid.name, LPGENT("Quicksearch Text"), SIZEOF(colourid.name));	colourid.order = 1;	colourid.defcolour = CLCDEFAULT_QUICKSEARCHCOLOUR;	CallService(MS_COLOUR_REGISTERT, (WPARAM)&colourid, 0);	HookEvent(ME_FONT_RELOAD, FS_FontsChanged);}
开发者ID:TonyAlloa,项目名称:miranda-dev,代码行数:70,


示例11: consensus_read_config

//.........这里部分代码省略.........            cur_node->config.make_progress_timeval.tv_sec = temp;        }        if(config_setting_lookup_int64(consensus_global_config,"progress_timeval_us",&temp)){            cur_node->config.make_progress_timeval.tv_usec = temp;        }        if(config_setting_lookup_int64(consensus_global_config,"reconnect_timeval_s",&temp)){            cur_node->config.reconnect_timeval.tv_sec = temp;        }        if(config_setting_lookup_int64(consensus_global_config,"reconnect_timeval_us",&temp)){            cur_node->config.reconnect_timeval.tv_usec = temp;        }        if(config_setting_lookup_int64(consensus_global_config,"ping_timeval_s",&temp)){            cur_node->config.ping_timeval.tv_sec = temp;        }        if(config_setting_lookup_int64(consensus_global_config,"ping_timeval_us",&temp)){            cur_node->config.ping_timeval.tv_usec = temp;        }        if(config_setting_lookup_int64(consensus_global_config,"expected_ping_timeval_s",&temp)){            cur_node->config.expect_ping_timeval.tv_sec = temp;        }        if(config_setting_lookup_int64(consensus_global_config,"expected_ping_timeval_us",&temp)){            cur_node->config.expect_ping_timeval.tv_usec = temp;        }    }    config_setting_t *nodes_config;    nodes_config = config_lookup(&config_file,"consensus_config");    if(NULL==nodes_config){        err_log("CONSENSUS : Cannot Find Nodes Settings./n");        goto goto_config_error;    }        if(NULL==nodes_config){        err_log("CONSENSUS : Cannot Find Net Address Section./n");        goto goto_config_error;    }    peer* peer_pool = cur_node->peer_pool;    for(uint32_t i=0;i<group_size;i++){         config_setting_t *node_config = config_setting_get_elem(nodes_config,i);        if(NULL==node_config){            err_log("CONSENSUS : Cannot Find Node%u's Address./n",i);            goto goto_config_error;        }        const char* peer_ipaddr;        int peer_port;        if(!config_setting_lookup_string(node_config,"ip_address",&peer_ipaddr)){            goto goto_config_error;        }        if(!config_setting_lookup_int(node_config,"port",&peer_port)){            goto goto_config_error;        }        peer_pool[i].my_node = cur_node;        peer_pool[i].peer_id = i;         peer_pool[i].base = cur_node->base;         peer_pool[i].reconnect = NULL;        peer_pool[i].active = 0;        peer_pool[i].my_buff_event = NULL;        peer_pool[i].sock_id = -1;        peer_pool[i].peer_address = (struct sockaddr_in*)malloc(sizeof(struct                    sockaddr_in));        peer_pool[i].sock_len = sizeof(struct sockaddr_in);        peer_pool[i].peer_address->sin_family =AF_INET;        inet_pton(AF_INET,peer_ipaddr,&peer_pool[i].peer_address->sin_addr);        peer_pool[i].peer_address->sin_port = htons(peer_port);        if(i==cur_node->node_id){            config_setting_lookup_int(node_config,"sys_log",&cur_node->sys_log);            config_setting_lookup_int(node_config,"stat_log",&cur_node->stat_log);            const char* db_name;            if(!config_setting_lookup_string(node_config,"db_name",&db_name)){                goto goto_config_error;            }            size_t db_name_len = strlen(db_name);            cur_node->db_name = (char*)malloc(sizeof(char)*(db_name_len+1));            if(cur_node->db_name==NULL){                goto goto_config_error;            }            if(NULL==strncpy(cur_node->db_name,db_name,db_name_len)){                free(cur_node->db_name);                goto goto_config_error;            }            cur_node->db_name[db_name_len] = '/0';            cur_node->my_address.sin_port = htons(peer_port);            cur_node->my_address.sin_family = AF_INET;            inet_pton(AF_INET,peer_ipaddr,&cur_node->my_address.sin_addr);        }    }    config_destroy(&config_file);    return 0;goto_config_error:    err_log("CONSENSUS : %s:%d - %s/n", config_error_file(&config_file),            config_error_line(&config_file), config_error_text(&config_file));    config_destroy(&config_file);    return -1;};
开发者ID:bluecloudmatrix,项目名称:libevent_paxos,代码行数:101,


示例12: BfastBAFConvert

int BfastBAFConvert(int argc, char *argv[]){	FILE *fpIn=NULL, *fpOut=NULL;	gzFile fpInGZ=NULL, fpOutGZ=NULL;	long long int counter;	char inputFileName[MAX_FILENAME_LENGTH]="/0";	char outputFileName[MAX_FILENAME_LENGTH]="/0";	char fastaFileName[MAX_FILENAME_LENGTH]="/0";	char outputID[MAX_FILENAME_LENGTH]="/0";	char *readGroupFileName=NULL, *readGroup=NULL, *readGroupString=NULL;	char *last;	int outputType=1; // BAF2TEXT	int outputSubType=TextOutput;	int inputType=BinaryInput;	int c, argnum;	AlignedRead a;	RGBinary rg;	char fileExtension[256]="/0";	// Get parameters	while((c = getopt(argc, argv, "f:o:r:O:h")) >= 0) {		switch(c) {			case 'O': outputType = atoi(optarg); break;			case 'f': strcpy(fastaFileName, optarg); break;			case 'o': strcpy(outputID, optarg); break;			case 'r': readGroupFileName=strdup(optarg); break;			case 'h':					  BfastBAFConvertUsage(); return 1;			default: fprintf(stderr, "Unrecognized option: -%c/n", c); return 1;		}	}	if(argc == optind) {		BfastBAFConvertUsage(); return 1;	}	/* Only read in the brg if necessary */	switch(outputType) {		case 2:		case 3:		case 4:			if(0 == strlen(fastaFileName)) {				PrintError(Name, "fastaFileName", "Required command line argument", Exit, InputArguments);			}			RGBinaryReadBinary(&rg,					NTSpace,					fastaFileName);			break;		default:			break;	}	/* Set types and file extension */	switch(outputType) {		case 0:			outputType=BAF;			inputType=TextInput;			outputSubType=BinaryOutput;			strcat(fileExtension, BFAST_ALIGNED_FILE_EXTENSION);			break;		case 1:			outputType=BAF;			inputType=BinaryInput;			outputSubType=TextOutput;			strcat(fileExtension, "txt");			break;		case 2:			outputType=SAM;			inputType=BinaryInput;			outputSubType=TextOutput;			strcat(fileExtension, BFAST_SAM_FILE_EXTENSION);			if(NULL != readGroupFileName) {				readGroup=ReadInReadGroup(readGroupFileName);				readGroupString=ParseReadGroup(readGroup);			}			break;		default:			PrintError(Name, NULL, "Could not understand output type", Exit, OutOfRange);	}	for(argnum=optind;argnum<argc;argnum++) {		strcpy(inputFileName, argv[argnum]);		/* Create output file name */		last = StrStrGetLast(inputFileName,				BFAST_ALIGNED_FILE_EXTENSION);		if(NULL == last) {			last = StrStrGetLast(inputFileName, "txt");			if(NULL == last) {				PrintError(Name, inputFileName, "Could not recognize file extension", Exit, OutOfRange);			}		}		outputFileName[0]='/0';		strncpy(outputFileName, inputFileName, (last - inputFileName));		outputFileName[(last-inputFileName)]='/0';		strcat(outputFileName, fileExtension);		/* Open the input file */		if(BinaryInput == inputType) {//.........这里部分代码省略.........
开发者ID:nh13,项目名称:BFAST,代码行数:101,


示例13: dvtmcf1_r1

//.........这里部分代码省略.........    int mvsh=0;    kolstr1=0;//char str1[1000];    class ostatok ost;    char shb[20];    int skl1;    int kodm;    int nk;    char ei[32];    char		mnds='/0';    double cena,nds;    char naimshet[512];    char nomn[112];//while(fgets(str1,sizeof(str1),ff1) != NULL)// {    while(curtmp.read_cursor(&rowtmp) != 0)    {        iceb_pbar(data->bar,kolstrtmp,++kolstr1);        /********          iceb_u_pole(str1,shb,1,'|');          iceb_u_pole(str1,strsql,2,'|');          skl1=atoi(strsql);          iceb_u_pole(str1,strsql,3,'|');          kgrm=atoi(strsql);          iceb_u_pole(str1,naim,4,'|');          iceb_u_pole(str1,strsql,5,'|');          kodm=atoi(strsql);          iceb_u_pole(str1,strsql,6,'|');          nk=atoi(strsql);        **************/        strncpy(shb,rowtmp[0],sizeof(shb)-1);        skl1=atoi(rowtmp[1]);        kgrm=atoi(rowtmp[2]);        naim.new_plus(rowtmp[3]);        kodm=atoi(rowtmp[4]);        nk=atoi(rowtmp[5]);        /*Остаток по карточкам*/        ostkarw(dn,mn,gn,dk,mk,gk,skl1,nk,&ost);        if(ost.ostm[0] == 0. && ost.ostm[1] == 0. && ost.ostm[3] == 0. && fabs(ost.ostmc[3]) < 0.009)            continue;        /************          iceb_u_pole(str1,ei,7,'|');          iceb_u_pole(str1,strsql,8,'|');          cena=atof(strsql);          iceb_u_pole(str1,strsql,9,'|');          nds=atof(strsql);          iceb_u_pole(str1,strsql,10,'|');        ***********/        strncpy(ei,rowtmp[6],sizeof(ei)-1);        cena=atof(rowtmp[7]);        nds=atof(rowtmp[8]);        strncpy(strsql,rowtmp[9],sizeof(strsql)-1);        if(atoi(strsql) == 0)            mnds=' ';        if(atoi(strsql) == 1)            mnds='+';        if(kgrmzp != kgrm)        {
开发者ID:zaharchuktv,项目名称:linuxbuh,代码行数:67,


示例14: vhost_bdev_scsi_inquiry_command

static intvhost_bdev_scsi_inquiry_command(struct vhost_block_dev *bdev,				struct vhost_scsi_task *task){	int hlen = 0;	uint32_t alloc_len = 0;	uint16_t len = 0;	uint16_t *temp16;	int pc;	int pd;	int evpd;	int i;	uint8_t *buf;	struct scsi_cdb_inquiry *inq;	inq = (struct scsi_cdb_inquiry *)task->req->cdb;	assert(task->iovs_cnt == 1);	/* At least 36Bytes for inquiry command */	if (task->data_len < 0x24)		goto inq_error;	pd = SPC_PERIPHERAL_DEVICE_TYPE_DISK;	pc = inq->page_code;	evpd = inq->evpd & 0x1;	if (!evpd && pc)		goto inq_error;	if (evpd) {		struct scsi_vpd_page *vpage = (struct scsi_vpd_page *)					      task->iovs[0].iov_base;		/* PERIPHERAL QUALIFIER(7-5) PERIPHERAL DEVICE TYPE(4-0) */		vpage->peripheral = pd;		/* PAGE CODE */		vpage->page_code = pc;		switch (pc) {		case SPC_VPD_SUPPORTED_VPD_PAGES:			hlen = 4;			vpage->params[0] = SPC_VPD_SUPPORTED_VPD_PAGES;			vpage->params[1] = SPC_VPD_UNIT_SERIAL_NUMBER;			vpage->params[2] = SPC_VPD_DEVICE_IDENTIFICATION;			len = 3;			/* PAGE LENGTH */			vpage->alloc_len = rte_cpu_to_be_16(len);			break;		case SPC_VPD_UNIT_SERIAL_NUMBER:			hlen = 4;			strncpy((char *)vpage->params, bdev->name, 32);			vpage->alloc_len = rte_cpu_to_be_16(32);			break;		case SPC_VPD_DEVICE_IDENTIFICATION:			buf = vpage->params;			struct scsi_desig_desc *desig;			hlen = 4;			/* NAA designator */			desig = (struct scsi_desig_desc *)buf;			desig->code_set = SPC_VPD_CODE_SET_BINARY;			desig->protocol_id = SPC_PROTOCOL_IDENTIFIER_ISCSI;			desig->type = SPC_VPD_IDENTIFIER_TYPE_NAA;			desig->association = SPC_VPD_ASSOCIATION_LOGICAL_UNIT;			desig->reserved0 = 0;			desig->piv = 1;			desig->reserved1 = 0;			desig->len = 8;			vhost_bdev_scsi_set_naa_ieee_extended(bdev->name,							      desig->desig);			len = sizeof(struct scsi_desig_desc) + 8;			buf += sizeof(struct scsi_desig_desc) + desig->len;			/* T10 Vendor ID designator */			desig = (struct scsi_desig_desc *)buf;			desig->code_set = SPC_VPD_CODE_SET_ASCII;			desig->protocol_id = SPC_PROTOCOL_IDENTIFIER_ISCSI;			desig->type = SPC_VPD_IDENTIFIER_TYPE_T10_VENDOR_ID;			desig->association = SPC_VPD_ASSOCIATION_LOGICAL_UNIT;			desig->reserved0 = 0;			desig->piv = 1;			desig->reserved1 = 0;			desig->len = 8 + 16 + 32;			strncpy((char *)desig->desig, "INTEL", 8);			vhost_strcpy_pad((char *)&desig->desig[8],					 bdev->product_name, 16, ' ');			strncpy((char *)&desig->desig[24], bdev->name, 32);			len += sizeof(struct scsi_desig_desc) + 8 + 16 + 32;			buf += sizeof(struct scsi_desig_desc) + desig->len;			/* SCSI Device Name designator */			desig = (struct scsi_desig_desc *)buf;			desig->code_set = SPC_VPD_CODE_SET_UTF8;			desig->protocol_id = SPC_PROTOCOL_IDENTIFIER_ISCSI;			desig->type = SPC_VPD_IDENTIFIER_TYPE_SCSI_NAME;			desig->association = SPC_VPD_ASSOCIATION_TARGET_DEVICE;			desig->reserved0 = 0;//.........这里部分代码省略.........
开发者ID:qoriq-open-source,项目名称:dpdk,代码行数:101,


示例15: encrypt_vec_to_file

int encrypt_vec_to_file( int vsizelocal, const char * input_file_name, const char * output_file_name, const char * key_file_name){	int input_size = 0, i, temp;	mpz_t *vec1;	char* temp_str = NULL;	FILE *input_file, *output_file;	vsize = vsizelocal;	input_file = fopen(input_file_name, "r");	output_file = fopen(output_file_name, "w");	strncpy(g_key_file_name, key_file_name, sizeof(g_key_file_name));	printf("Number of vector dimensions = %d/n", vsizelocal);	//printf("p_vec2:%p, ENOMEM:%d/n", p_vec2, (errno == ENOMEM)?1:0);	//initialize vectors and big number variables	//Dynamically creating the array	vec1 = (mpz_t *)malloc(vsizelocal*sizeof(mpz_t));	//We have to write encrypted values to file	//to hold each value in string before we need	//a large string to copy the big number	//Although the key size is 4096 bits,	//we will allocate the chars capable of storing	//8192 bit values. No. of chars required = 	//log(2^{8192}) base 10 = keysize*log 2 = 8192 * log 2 = 2466.03<2500	temp_str = (char *)malloc(BIG_NUM_SZ);	//initialize vectors and big number variables	for (i = 0; i < vsizelocal; i++)		mpz_init(*(vec1+i));	//variables are set to 0	init();	for (i = 0; i < vsizelocal; i++)	{		mpz_init(*(vec1+i));	}	//variables are set to 0	//init();	//check if files are opened properly	if (input_file == NULL) {		printf("/n%s", "Error: open input_file!");		return -2;	}	if (output_file == NULL) {		printf("/n%s", "Error: open output_file!");		return -3;	}	//fill in the first vector	for( fscanf(input_file,"%d", &temp); temp != EOF && input_size < vsizelocal; 			fscanf(input_file, "%d", &temp) ){		//temp = (int) temp2;		//printf("doc1:: temp2: %" PRId64 ", temp:%d/n", temp2, temp);		printf("doc1::Wt:%d/n", temp);		encrypt(*(vec1+input_size), temp);		//gmp_printf("No. of chars:%d, BIGNO:%s/n", gmp_sprintf(temp_str, "%Zd", *(vec1+input_size)), temp_str);		//TODO: Optimization area use fprintf directly using %Zd instead of temp_str. No memory needed.		gmp_sprintf(temp_str, "%Zd", *(vec1+input_size));		//decrypt(vec1[input_size]);		//gmp_printf("%d: %Zd/n", input_size, *(vec1+input_size));		fprintf(output_file, "%s", temp_str);		fflush(output_file);		sync();		input_size ++;		if ( vsizelocal!=1 && input_size < vsizelocal )		{			fprintf(output_file, "/n");		}	} 	fclose(input_file);  	fflush(output_file);	fclose(output_file);	//release space used by big number variables	for (i = 0; i < vsizelocal; i++)		mpz_clear(*(vec1+i));	clear();	free(vec1);//.........这里部分代码省略.........
开发者ID:flpymonkey,项目名称:DocumentVectorTester,代码行数:101,


示例16: strncpy

void WebTask::SetURL( char *url ){	// サ
C++ strncpy0函数代码示例
C++ strncmpi函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。