ego*_*pts 1 c string parsing numbers
我有以下字符串
char *filename = "/home/data/slice-10-1.dat";
Run Code Online (Sandbox Code Playgroud)
我需要解析以下内容
int sliceTime
int sliceIndex;
Run Code Online (Sandbox Code Playgroud)
sliceTime应该是 10 并且sliceOrder应该是 1
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
int main (void)
{
char str[] = "/home/data/slice-10-1.dat";
int sliceTime, sliceIndex, counter = 0;
char * pch;
pch = strtok (str," ./-");
while (pch != NULL)
{
//printf("%s\n" ,pch);
size_t ln = strlen(pch) - 1;
if( pch[ln] == '\n' ) pch[ln] = '\0';
int notNumber = 0;
/* Ensure that input is a number */
for(size_t i = 0; i < ln; i++) {
if( !isdigit(pch[i]) ) {
notNumber = 1;
}
}
if(!notNumber)
if(counter++ == 0)
sliceTime = atoi(pch);
else
sliceIndex = atoi(pch);
pch = strtok (NULL, " ./-");
}
printf("SliceTime = %d, SliceIndex = %d\n", sliceTime, sliceIndex);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
切片时间 = 10,切片索引 = 1
如果您始终具有相同的字符串模式,请使用 BLUEPIXY 的解决方案,方法是sscanf():
#include <stdio.h>
int main(void) {
char *filename = "/home/data/slice-10-1.dat";
int sliceTime, sliceIndex;
if(sscanf(filename, "%*[^-]-%d-%d", &sliceTime, &sliceIndex) == 2){
printf("%d, %d\n", sliceTime, sliceIndex);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
10, 1
| 归档时间: |
|
| 查看次数: |
103 次 |
| 最近记录: |