c语言中用数组指针进行字符串排列
时间: 2023-12-29 08:04:57 浏览: 30
在C语言中,我们可以使用指向指针的指针或数组指针来进行字符串排列。下面是一个使用数组指针的示例:
```c
#include <stdio.h>
#include <string.h>
int main()
{
char *str[] = {"apple", "banana", "orange", "grape"};
int i, j;
for (i = 0; i < 4; i++)
{
for (j = i + 1; j < 4; j++)
{
if (strcmp(str[i], str[j]) > 0)
{
char *temp = str[i];
str[i] = str[j];
str[j] = temp;
}
}
}
for (i = 0; i < 4; i++)
{
printf("%s\n", str[i]);
}
return 0;
}
```
在上面的示例中,我们首先定义了一个字符串指针数组`str`,其中包含四个字符串。然后,我们使用两个嵌套的循环来比较和交换字符串,以按字母顺序对它们进行排序。最后,我们打印出排好序的字符串。
相关问题
c语言中用指向指针的指针对5个字符串排序并输出
下面是用指向指针的指针对5个字符串排序并输出的 C 语言代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
void sort_strings(char **strings, int n);
int main() {
char str[MAX_LEN];
char *strings[5];
int i;
printf("请输入五个字符串:\n");
for (i = 0; i < 5; i++) {
scanf("%s", str);
strings[i] = (char *)malloc(strlen(str) + 1);
strcpy(strings[i], str);
}
sort_strings(strings, 5);
printf("\n排序后的字符串为:\n");
for (i = 0; i < 5; i++) {
printf("%s\n", strings[i]);
}
for (i = 0; i < 5; i++) {
free(strings[i]);
}
return 0;
}
void sort_strings(char **strings, int n) {
int i, j;
char *temp;
for (i = 0; i < n - 1; i++) {
for (j = i + 1; j < n; j++) {
if (strcmp(strings[i], strings[j]) > 0) {
temp = strings[i];
strings[i] = strings[j];
strings[j] = temp;
}
}
}
}
```
这段代码中,我们首先定义了一个字符串数组 `strings`,然后使用 `scanf` 函数从标准输入中读入五个字符串,并使用 `malloc` 函数为每个字符串分配内存。接着,我们调用 `sort_strings` 函数对这五个字符串进行排序。最后,我们使用 `printf` 函数输出排序后的字符串,并使用 `free` 函数释放每个字符串的内存。在 `sort_strings` 函数中,我们使用冒泡排序算法对字符串进行排序。这里需要注意的是,我们使用指向指针的指针来操作字符串数组,以便在排序时能够直接交换字符串的指针。
如何用c语言输入一个字符串,统计字符串中非英文字母字符个数
可以使用 C 语言中的字符数组和循环结构,具体实现如下:
```c
#include <stdio.h>
#include <ctype.h>
int main() {
char str[100]; // 字符数组用于存储字符串
int count = 0; // 统计非英文字母字符个数
printf("请输入一个字符串:\n");
scanf("%s", str); // 读入字符串
// 循环遍历字符串中的每一个字符
for (int i = 0; str[i] != '\0'; i++) {
if (!isalpha(str[i])) { // 如果不是英文字母
count++; // 统计个数加一
}
}
printf("字符串中非英文字母字符个数为:%d\n", count);
return 0;
}
```
解释一下代码中用到的函数:
- `scanf("%s", str)`:从标准输入读入一个字符串,保存到字符数组 `str` 中。注意这里没有使用 `&`,因为 `str` 本身就是一个指向字符数组的指针。
- `str[i] != '\0'`:判断字符串是否结束。每个字符串在最后都会有一个空字符 `\0`,表示字符串结束。
- `isalpha(str[i])`:判断字符是否是英文字母,如果是则返回非零值,否则返回零。这个函数需要包含头文件 `ctype.h`。