易百教程

编写程序以读取由任意字符终止的字符串

使用getchar()函数定义函数。它将从stdin读取一个由字符终止的字符串。终止字符作为函数的第三个参数传递。原型将如下:

char *getString(char *buffer, size_t buffer, char end_char);

返回值是作为第一个参数传递的指针。

实现示例代码

#define __STDC_WANT_LIB_EXT1__ 1
#include <stdio.h>
#include <string.h>

#define MAX_SIZE     100
#define STRING_COUNT   5

char* getString(char *buffer, size_t buffer_size, char end_char);

int main(void)
{
    char buffer[MAX_SIZE] = { 0 };
    int i = 0;
    for (i = 0; i < STRING_COUNT; ++i)
    {
        printf_s("\n输入以冒号结尾的字符串:\n");
        if (!getString(buffer, MAX_SIZE, ':'))
        {
            printf_s("错误返回但仍在继续...\n");
            continue;
        }
        printf_s("你输入的字符串是:\n%s\n", buffer);
    }
}

char* getString(char *buffer, size_t size, char end_char)
{
    size_t i = 0;
    // 读取一个字符,直到输入end_char
    while ((buffer[i++] = getchar()) != end_char) {
        if (i >= size)
        {
            printf_s("超出缓冲区容量.\n");
            return NULL;
        }
    }
    fflush(stdin);
    buffer[i - 1] = '\0';   // 用字符串终止符覆盖end_char
    return buffer;
}

执行上面示例代码,得到以下结果:

输入以冒号结尾的字符串:
This is a test string from
yiibai.com
:
你输入的字符串是:
This is a test string from
yiibai.com


输入以冒号结尾的字符串: