好吧。我有一个不同的方法。使用strtolwhich 将为您返回一个指向您添加 1 并strtol在下半场再次调用的“/”的指针。
这是第一个答案的两倍,是第二个答案的一半。:)
#include
#include
int main(){
char *f = " 12/7 ";
char *s;
long n,d;
n = strtol(f, &s, 10);
d = strtol(s+1, NULL, 10);
printf(" %ld/%ld \n", n, d);
return 0;
}
要回答您的其余问题,如果它是一个分数,您肯定需要 2 个变量。如果您可以在内部使用浮点并且分数只是用户输入的一个很好的功能,那么您可以继续将它们除以并将数字存储在一个变量中。
double v;
v = (double)n / d;
强制转换double为对两个整数进行浮点除法。
另一方面,如果您要处理很多分数,您可能需要创建一个结构来保存它们(如果您愿意,可以使用object)。
struct frac {
long num;
long den;
};
struct frac f = { 12, 7 };
printf("%ld/%ld\n", f.num, f.den);