如果我有一个包含10X15的字符串。我想分开10和15.以下代码是否正确。我担心代码的第二部分,就是把“NULL”放在正确的位置。
char * stringSixrows = strtok(stringSix[0], "X");
char * stringSixcollumns = strtok(NULL, "NULL");
//我把第二个null放在那里导致它的字符串结束,我不确定它是否正确。
答案 0 :(得分:1)
我会说获取“指向剩余字符串的指针”的“规范”方法是:
strtok(NULL, "")
strtok
在提供的字符串中搜索任何分隔符,因此如果您不提供任何分隔符,则无法找到任何分隔符,因此只会在输入结束时停止字符串。
答案 1 :(得分:0)
示例
#include <stdio.h>
#include <string.h>
int main(void){
char stringSix[] = "10X15";
char *stringSixrows = strtok(stringSix, "X");
char *stringSixcolumns = strtok(NULL, "X");
printf("%s, %s\n", stringSixrows, stringSixcolumns);
return 0;
}
另一种方式
char stringSix[] = "10X15";
char stringSixrows[3];
char stringSixcolumns[3];
char *p;
if(NULL!=(p = strchr(stringSix, 'X')))
*p = '\0';
else {
printf("invalid format\n");
return -1;
}
strcpy(stringSixrows, stringSix);
strcpy(stringSixcolumns, p+1);
printf("%s, %s\n", stringSixrows, stringSixcolumns);
const char *stringSix = "10X15";
int stringSixrows;
int stringSixcolumns;
if(2==sscanf(stringSix, "%dX%d", &stringSixrows, &stringSixcolumns))
printf("%d, %d\n", stringSixrows, stringSixcolumns);
答案 2 :(得分:0)
您可以使用strtol将字符串转换为数字以及搜索下一个字符串。下面的代码安全地完成了预期的操作:
char stringSix[] = "10X15";
char * pEnd;
long firstNumber = strtol (stringSix,&pEnd, 10);
pEnd = strtok(pEnd, "");
long secondNumber = strtol (pEnd,&pEnd, 10);