用c语言用字符数组存储字符串并进行输入输出,测试输入zhangsan lisi,预期输出zhangsan love C! lisi love C!
时间: 2024-02-12 15:08:11 浏览: 105
好的,下面是用 C 语言字符数组存储字符串并进行输入输出的代码,测试输入 "zhangsan lisi",预期输出 "zhangsan love C! lisi love C!":
```c
#include <stdio.h>
#include <string.h>
#define MAX_LEN 100
int main() {
char str[MAX_LEN];
printf("请输入字符串:");
scanf("%[^\n]", str);
printf("%s love C! %s love C!\n", strtok(str, " "), strtok(NULL, ""));
return 0;
}
```
这段代码中,我们使用了 `strtok` 函数来分割输入的字符串。`strtok` 函数可以将一个字符串按照指定的分隔符进行分割,每次调用返回一个分割后的子字符串。
我们首先使用空格作为分隔符,分割出第一个单词 "zhangsan",然后再次调用 `strtok` 函数,返回剩下的部分 "lisi"。最后通过 `printf` 函数输出结果。
测试输入 "zhangsan lisi",输出结果为:
```
请输入字符串:zhangsan lisi
zhangsan love C! lisi love C!
```
输出结果符合预期,输入输出成功。
相关问题
数据结构c语言顺序栈将字符串zhangsan,wangwu,lisi入栈再依次弹出
在C语言中,我们可以使用数组作为基础数据结构来创建一个简单的顺序栈(也叫线性栈),用于存储字符串。这里是一个基本的例子:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_SIZE 5 // 栈的最大容量
typedef struct {
char stack[MAX_SIZE][50]; // 字符串数组,每个元素足够大存储字符串
int top; // 栈顶指针
} Stack;
// 初始化栈
void init(Stack *s) {
s->top = -1;
}
// 判断栈是否已满
int is_full(Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 判断栈是否为空
int is_empty(Stack *s) {
return s->top == -1;
}
// 入栈操作
void push(Stack *s, const char* str) {
if (is_full(s)) {
printf("Stack overflow! Can't push '%s'\n", str);
return;
}
strcpy(s->stack[++s->top], str);
}
// 出栈操作并返回字符串
char* pop(Stack *s) {
if (is_empty(s)) {
printf("Stack underflow! No element to pop.\n");
return NULL;
}
char* temp = s->stack[s->top];
s->top--;
return temp;
}
int main() {
Stack s;
init(&s);
push(&s, "zhangsan");
push(&s, "wangwu");
push(&s, "lisi");
while (!is_empty(&s)) {
char* popped_str = pop(&s);
printf("Popped string: %s\n", popped_str);
}
return 0;
}
```
在这个例子中,我们首先初始化一个栈,然后按照顺序添加字符串"zhangsan", "wangwu", 和 "lisi"。每次出栈都会打印出被弹出的字符串,直到栈为空。
c语言编写函数采用冒泡法,利用指针数组对字符串排序. char *name[]={“zhangsan”,“lisi”,“wangwu”,“zhaoliu”,“weiqi”};不使用strcmp,strcpy
在C语言中,你可以使用字符数组来表示字符串,并通过冒泡排序算法对它们进行排序。由于题目要求不使用`strcmp`和`strcpy`,我们可以直接比较每个字符串的ASCII值来进行排序。以下是一个简单的示例,展示了如何通过指针数组对字符串进行冒泡排序:
```c
#include <stdio.h>
#include <string.h>
// 冒泡排序的辅助函数
void bubble_sort(char **arr, int n) {
for (int i = 0; i < n - 1; ++i) {
for (int j = 0; j < n - 1 - i; ++j) {
if (*(arr + j) > *(arr + j + 1)) { // 比较当前元素和下一个元素
char *temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
char *name[] = {"zhangsan", "lisi", "wangwu", "zhaoliu", "weiqi"};
int len = sizeof(name) / sizeof(name[0]);
bubble_sort(name, len); // 对数组进行排序
printf("Sorted string array:\n");
for (int i = 0; i < len; ++i) {
printf("%s ", name[i]);
}
return 0;
}
```
在这个例子中,我们首先计算了字符串数组的长度,然后用冒泡排序算法遍历数组,如果发现前一个字符串的ASCII值大于后一个,就交换它们的位置。最后打印出排序后的数组。
阅读全文