用c语言的串编写一个程序,输入一个字符串,输出串的长度。 要求: (1)字符串长度不超过100个字符。 (2)不使用任何字符串库函数,建议使用堆串存储结构。 输入描述 输入一个字符串。 输出描述 输出该字符串的长度。 样例输入 level 样例输出 字符串的串长为5
时间: 2024-11-05 07:24:10 浏览: 6
广告串编网络系统.doc
要使用 C 语言编写一个程序来计算字符串的长度,特别是不使用任何内置的字符串库函数,我们可以使用一个自定义的堆栈串结构。下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义一个堆栈结构用于存储字符
typedef struct Stack {
char* data;
int top; // 栈顶指针
int size; // 初始化栈容量
} Stack;
// 动态分配内存并初始化堆栈
void init(Stack* s) {
s->data = (char*)malloc(s->size * sizeof(char));
s->top = -1;
}
// 入栈操作
void push(Stack* s, char c) {
if (s->top == s->size - 1) {
s->size *= 2;
s->data = (char*)realloc(s->data, s->size * sizeof(char)); // 扩容
}
s->data[++s->top] = c;
}
// 出栈操作
char pop(Stack* s) {
return s->top == -1 ? '\0' : s->data[s->top--];
}
// 计算字符串长度
int getLength(Stack* s) {
while (!isspace(pop(s))) {} // 循环直到遇到空格或其他空白字符
return s->top + 1; // 返回到第一个空格前的字符数量就是字符串长度
}
int main() {
Stack stringStack;
init(&stringStack);
char input[101];
fgets(input, sizeof(input), stdin); // 读取输入字符串
input[strcspn(input, "\n")] = '\0'; // 删除换行符
for (int i = 0; input[i] != '\0'; ++i) {
push(&stringStack, input[i]);
}
printf("字符串的长度为: %d\n", getLength(&stringStack));
free(stringStack.data);
return 0;
}
```
在这个程序中,我们首先创建了一个 `Stack` 结构,然后通过 `push` 函数逐个将输入字符串中的字符压入堆栈。当遇到空格或其他空白字符时,`getLength` 函数会停止计数。最后,从主函数中输出计算出的字符串长度。
阅读全文