C语言解决,字符串拆分出整数,并依次输出
时间: 2023-06-05 19:07:52 浏览: 166
可以使用C语言中的strtok函数将字符串根据指定分隔符分割成多个子字符串,然后使用atoi函数将每个子字符串转化为整数并输出。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {
char str[] = "1,2,3,4,5";
char *token = strtok(str, ",");
while (token != NULL) {
int num = atoi(token);
printf("%d ", num);
token = strtok(NULL, ",");
}
return 0;
}
```
输出结果为:1 2 3 4 5
相关问题
写出完整的程序 实现c语言字符串拆分出连续的整数,并由小到大排列
以下是一个示例程序,可以实现这个功能:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int compare_integers(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
char input_string[1000];
printf("Please enter a string of integers separated by non-digit characters:\n");
scanf("%s", input_string);
int numbers[1000];
int num_count = 0;
char* token = strtok(input_string, " ,.-");
while (token != NULL) {
int num = atoi(token);
if (num != 0) {
numbers[num_count] = num;
num_count++;
}
token = strtok(NULL, " ,.-");
}
qsort(numbers, num_count, sizeof(int), compare_integers);
printf("Sorted numbers:\n");
for (int i = 0; i < num_count; i++) {
printf("%d ", numbers[i]);
}
printf("\n");
return 0;
}
```
这个程序首先要求用户输入一个字符串(假设在运行程序时输入,而不是在代码中写死),然后使用 `strtok` 函数拆分出其中的整数。这个函数会将字符串分割成若干个子字符串,每个子字符串被非数字字符隔开。我们使用空格、逗号、短横线和句点作为分隔符。分割出的子字符串中,如果是数字,就将其转换成整数并存储到一个数组中。最后,我们使用 `qsort` 函数对这个数组进行排序,并将结果输出到屏幕上。
值得注意的是,为了避免不必要的麻烦,我们使用 `atoi` 函数将拆分出的每个字符串转换成整数,而不是使用 `sscanf` 函数。因为 `sscanf` 函数可能会受到用户输入格式的限制,而 `atoi` 函数则比较容错。当然,这个程序还可以有很多改进的空间,比如可以增加对用户输入非法的处理程序等等。
用c语言写一个拆分实数整数和小数部分的代码
在 C 语言中,你可以使用 `strtol` 函数来解析整数部分,`strtod` 或者 `strtod_s` 来处理小数部分。下面是一个简单的示例代码,展示了如何实现这个功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
// 将字符串转换为整数
int parseInt(const char* str) {
long int result;
char *endptr;
if (str == NULL || strtol(str, &endptr, 10) == LONG_MIN || endptr == str) {
printf("Invalid integer format.\n");
return -1;
}
result = strtol(str, &endptr, 10);
// Check for overflow or underflow
if (*endptr != '\0') {
printf("Number too large or not an integer.\n");
return -1;
}
return result;
}
// 将字符串转换为浮点数
double parseFloat(const char* str) {
double result;
char* endptr;
if (str == NULL || strtod(str, &endptr) == HUGE_VAL || isnan(result)) {
printf("Invalid float format.\n");
return -1.0;
}
if (*endptr != '\0') {
printf("Number too large or not a number.\n");
return -1.0;
}
return result;
}
int main() {
char strReal[50];
printf("Enter a real number: ");
fgets(strReal, sizeof(strReal), stdin);
int intPart = parseInt(strReal); // 整数部分
double decPart = parseFloat(strReal + strlen(strReal) - 1); // 小数部分(从最后一个非空字符开始)
if (intPart >= 0 && decPart >= 0) {
printf("Integer part: %d\n", intPart);
printf("Decimal part: %.2f\n", decPart);
}
return 0;
}
```
在这个例子中,用户会被提示输入一个实数,然后程序会尝试将其分解为整数和小数两部分。注意,由于 `fgets` 读取的字符串通常包括换行符,所以在提取小数部分之前,我们先移除了最后一个字符。
阅读全文
相关推荐














