c语言输入字符串:c++:1,python:3,c:5,java:4,rust:2请将其中的字符串按照升序排序输出:(输出的格式按照逗号隔开)使用strtok和sscanf
时间: 2024-02-03 07:11:32 浏览: 102
下面是使用strtok和sscanf函数对字符串按照升序排序的C语言代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN] = "c++:1,python:3,c:5,java:4,rust:2";
char *token;
int i, j, n;
char lang[10];
int score;
int scores[5];
char langs[5][10];
// 使用strtok分割字符串
token = strtok(str, ",");
n = 0;
while (token != NULL) {
// 使用sscanf获取语言和分数
sscanf(token, "%[^:]:%d", lang, &score);
strcpy(langs[n], lang);
scores[n] = score;
n++;
token = strtok(NULL, ",");
}
// 使用冒泡排序将分数升序排列
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (scores[j] > scores[j + 1]) {
int temp_score = scores[j];
scores[j] = scores[j + 1];
scores[j + 1] = temp_score;
char temp_lang[10];
strcpy(temp_lang, langs[j]);
strcpy(langs[j], langs[j + 1]);
strcpy(langs[j + 1], temp_lang);
}
}
}
// 输出排序后的结果
for (i = 0; i < n; i++) {
printf("%s:%d", langs[i], scores[i]);
if (i < n - 1) {
printf(",");
}
}
printf("\n");
return 0;
}
```
输出结果为:
```
c++:1,rust:2,python:3,java:4,c:5
```
阅读全文