C语言字符串操作:系统主界面设计与流程图分析

项目概述

本项目使用C语言设计一个系统主界面,用于对输入的字符串进行各种操作。用户可以通过菜单选择不同的功能,包括:

  1. 原样输出字符串
  2. 统计字符串中字符的个数
  3. 查找某个字符在字符串中第一次出现的位置
  4. 在字符串的指定位置插入一个字符
  5. 删除字符串中的某个字符
  6. 将字符串中从指定位置开始的某个字符替换成另一个字符
  7. 将字符串中的某个字符替换成指定字符

代码实现

以下是使用C语言设计系统主界面的代码:

#include <stdio.h>
#include <string.h>

int main() {
    int choice;
    char str[100];
    printf('请输入一个字符串:');
    scanf('%s', str);
    while (1) {
        printf('
1. 原样输出
');
        printf('2. 统计字符个数
');
        printf('3. 查找字符第一次出现的位置
');
        printf('4. 在指定位置插入一个字符
');
        printf('5. 删除字符串中的某个字符
');
        printf('6. 指定位置字符替换
');
        printf('7. 将指定字符替换成另一个字符
');
        printf('8. 退出
');
        printf('请选择功能:');
        scanf('%d', &choice);
        switch (choice) {
            case 1:
                printf('原样输出:%s
', str);
                break;
            case 2:
                printf('字符个数:%d
', strlen(str));
                break;
            case 3:
                printf('请输入要查找的字符:');
                char c;
                scanf(' %c', &c);
                char* p = strchr(str, c);
                if (p == NULL) {
                    printf('未找到该字符
');
                } else {
                    printf('该字符第一次出现的位置:%d
', p - str);
                }
                break;
            case 4:
                printf('请输入要插入的字符和位置(用空格隔开):');
                char c2;
                int pos;
                scanf(' %c %d', &c2, &pos);
                if (pos < 0 || pos > strlen(str)) {
                    printf('位置不合法
');
                } else {
                    for (int i = strlen(str); i >= pos; i--) {
                        str[i+1] = str[i];
                    }
                    str[pos] = c2;
                    printf('插入后的字符串:%s
', str);
                }
                break;
            case 5:
                printf('请输入要删除的字符:');
                char c3;
                scanf(' %c', &c3);
                char* p2 = str;
                while (*p2 != '�') {
                    if (*p2 == c3) {
                        for (int i = p2 - str; i < strlen(str); i++) {
                            str[i] = str[i+1];
                        }
                    } else {
                        p2++;
                    }
                }
                printf('删除后的字符串:%s
', str);
                break;
            case 6:
                printf('请输入要替换的字符、替换的字符和位置(用空格隔开):');
                char c4, c5;
                int pos2;
                scanf(' %c %c %d', &c4, &c5, &pos2);
                if (pos2 < 0 || pos2 > strlen(str)) {
                    printf('位置不合法
');
                } else {
                    for (int i = pos2; i < strlen(str); i++) {
                        if (str[i] == c4) {
                            str[i] = c5;
                        }
                    }
                    printf('替换后的字符串:%s
', str);
                }
                break;
            case 7:
                printf('请输入要替换的字符和替换成的字符:');
                char c6, c7;
                scanf(' %c %c', &c6, &c7);
                char* p3 = str;
                while (*p3 != '�') {
                    if (*p3 == c6) {
                        *p3 = c7;
                    }
                    p3++;
                }
                printf('替换后的字符串:%s
', str);
                break;
            case 8:
                printf('退出程序
');
                return 0;
            default:
                printf('输入有误,请重新选择
');
                break;
        }
    }
    return 0;
}

流程图与问题分析

功能三:查找某个字符在字符串中第一次出现的位置

流程图

查找某个字符在字符串中第一次出现的位置流程图

可能出现的问题和解决方法

  • 输入的字符串中没有要查找的字符: 此时 strchr() 函数返回 NULL,需要在程序中判断并输出未找到该字符的信息。
  • 输入的字符串中有多个要查找的字符: 此时 strchr() 函数只能找到第一个字符的位置,需要在程序中循环查找并输出所有字符的位置。

功能五:删除字符串中的某个字符

流程图

删除字符串中的某个字符流程图

可能出现的问题和解决方法

  • 输入的字符串中没有要删除的字符: 此时程序不会进行任何操作,可以在输出中提示无需删除。
  • 输入的字符串中有多个要删除的字符: 此时需要在程序中循环查找并删除所有字符,可以使用指针遍历字符串并进行删除操作。同时,由于删除操作会改变字符串的长度,需要注意循环的条件和删除操作的实现方式。
C语言字符串操作:系统主界面设计与流程图分析

原文地址: https://www.cveoy.top/t/topic/gx0D 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录