sscanf(buffer, "%*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %*s %s %*s %*s %*s %s %*s %s %*s %*s %*s %*s %s", temp, wr1_linkt, wr1_onew, time);
时间: 2023-09-12 20:02:52 浏览: 109
这是一段格式化输入字符串的代码,使用了sscanf函数。它从字符数组buffer中按照一定的格式读取数据,并将读取的结果分别存储在temp、wr1_linkt、wr1_onew和time四个变量中。其中%*s表示跳过一个字符串输入项,%s表示读取一个字符串输入项。具体的输入格式可以根据实际情况进行调整。
相关问题
sscanf(pRtsp->in_buffer, " %*s %254s ", s8Url)
sscanf函数是C语言中的一个输入格式化函数,用于从字符串中按照指定格式读取数据。在你提供的代码中,sscanf函数用于从字符串pRtsp->in_buffer中读取数据,并将读取到的数据存储到s8Url变量中。
具体来说,代码中的格式字符串" %*s %254s "表示按照以下规则进行匹配:
- " ":跳过任意数量的空格字符
- "%*s":跳过一个字符串,但不将其存储到任何变量中
- "%254s":读取一个最大长度为254的字符串,并将其存储到s8Url变量中
这段代码的作用是从pRtsp->in_buffer字符串中提取出一个长度不超过254的字符串,并将其存储到s8Url变量中。
char temp[50], voltage[50], offset[50], wr1_linkt[50], wr1_loop[50], wr1_onew[50], wr0_linkt[50], wr0_loop[50], wr0_onew[50], time[50]; char buffer[1024]; int counter = 0; FILE *fp = popen("/usr/bin/sn_core.elf getstat 2>/dev/null","r"); if(fp == NULL){ printf("Failed to run\n"); exit(0); } fgets(buffer,sizeof(buffer),fp); char *p = strstr(buffer,"mu:"); sscanf(p,"%*[^0123456789]%[^ ]",wr1_loop); printf("%s\n",wr1_loop[0]); p = strstr(buffer,"dms:"); sscanf(p,"%*[^0123456789]%[^ ]",wr1_onew); printf("%s\n",wr1_onew[0]); p = strstr(buffer,"crtt:"); sscanf(p,"%*[^0123456789]%[^ ]",wr1_linkt); printf("%s\n",wr1_linkt[0]); p = strstr(buffer,"temp:"); sscanf(p,"%*[^0123456789]%[^ ]",temp); printf("%s\n",temp[0]); p = strstr(buffer,"Time:"); sscanf(p,"%*[^0-9+-]%[^.]",time); printf("%s\n",time[0]); pclose(fp); return 0; 出现Segmentation fault
出现 Segmentation fault 错误通常是因为程序访问了不可访问的内存地址,导致程序崩溃。在代码中,可能是因为数组越界或者指针没有被正确初始化等原因导致了该错误。可以通过调试工具来找出错误的具体位置,并进行相应的修复。另外,你的代码中输出变量时使用了 %s,但是变量类型是 char 类型的数组,应该使用 %c 来输出单个字符。
阅读全文