我正在尝试自学C语言。 我想将一个整数拆分成多个单独的整数,例如将12345拆分为12、34和5,但我找不到方法来实现它。
我已经了解了一些Java和编程基础知识。我需要使用do-while或for循环来完成这个任务吗?还是可以使用一个整数类型的数组?
我已经了解了一些Java和编程基础知识。我需要使用do-while或for循环来完成这个任务吗?还是可以使用一个整数类型的数组?
#include <stdio.h>
#include <string.h>
int main() {
int i; //Counter
char getStr[100];
int NumberToSplit1, NumberToSplit2, NumberToSplit3;
printf("Enter a number: ");
scanf("%s", getStr); //get it as a string
//or you can use scanf("%[^\n], getStr);
printf("How many number splits you want: ");
scanf("%d %d %d", &NumberToSplit1, &NumberToSplit2, &NumberToSplit3);
printf("\n%d-%d-%d split: \n", NumberToSplit1, NumberToSplit2, NumberToSplit3);
for (i = 0; i < NumberToSplit1; i++) {
printf("%c", getStr[i]);
}
printf("\n");
for (i = NumberToSplit1; i < (NumberToSplit1+NumberToSplit2); i++) {
printf("%c", getStr[i]);
}
printf("\n");
for (i = (NumberToSplit1+NumberToSplit2); i < (NumberToSplit1+NumberToSplit2+NumberToSplit3); i++) {
printf("%c", getStr[i]);
}
//If you want to save it in an integer, you can use strcat function to save the temp 2 numbers in a string convert that to integer
//or use https://dev59.com/NWw05IYBdhLWcg3wy052
printf("\n");
printf("\n");
}
输出:
Enter a number: 12345
How many number splits you want: 2 2 4
2-2-4 split:
12
34
5
Program ended with exit code: 0
#include <stdio.h>
int n = 12345678;
int len = snprintf(NULL, NULL, "%d", n);
char *digits = malloc(len);
sprintf(digits, "%d", n);
那么你可以以多种方式拆分字符串,例如:
int a, b, c;
sscanf(digits, "%2d%2d%4d", &a, &b, &c);
或者:
char sa[2], sb[2], sc[4];
char *cp = digits;
sa[0] = *cp++;
sa[1] = *cp++;
sb[0] = *cp++;
sb[1] = *cp++;
sc[0] = *cp++;
sc[1] = *cp++;
sc[2] = *cp++;
sc[3] = *cp++;
printf("%2c %2c %4c\n", sa, sb, sc);
或者:
// Create 3 buffers to hold null-terminated ('\0' terminated) strings
char sa[3] = { 0 } , sb[3] = { 0 }, sc[4] = { 0 };
char *cp = digits;
sa[0] = *cp++;
sa[1] = *cp++;
sb[0] = *cp++;
sb[1] = *cp++;
sc[0] = *cp++;
sc[1] = *cp++;
sc[2] = *cp++;
sc[3] = *cp++;
printf("%s %s %s\n", sa, sb, sc);
然后释放你的内存:
free(digits);
等等...
等等... 等等...如果您想将一个八位数分成2-2-4的形状,只需使用整数除法和模数即可。
假设您不想要任何负号:
void split( int input, int output[3] )
{
if ( input<0 )
input = -input;
output[0] = input % 10000;
output[1] = ( input / 10000 ) % 100;
output[2] = input / 1000000;
}
sprintf()
吗?C并没有你所期望的那种功能,它没有特定的函数来处理十进制数。 - EOFint
,想要几个int
?那么如何进行一些简单的数学运算呢?(整数除法和取模)?如果不是这种情况,请澄清并展示代码。 - user2371524