题目

从标准输入读入一行包含空格的文本字符串,使用字符指针定位并输出第一个空格字符所在的下标位置(从 0 开始)。若无空格输出 -1。

输入格式:输入一行包含字符的文本串(以换行符结束)。

输出格式:输出一个整数表示第一个空格的下标索引;未找到输出 -1,末尾换行。

数据范围与约定:字符串长度不超过 500。

思路与算法

1. 字符指针线性探测
指针 const char *p = str;,循环向前移动直到 *p == ' ' || *p == '\0'。

2. 指针减法求偏移量
若找到空格,两个同类型指针相减 p - str 会自动计算出它们之间的元素偏移个数,对应数组下标。

完整程序

#include <stdio.h>

int main(void)
{
    char line[1000];
    if (!fgets(line, sizeof line, stdin)) {
        return 1;
    }

    const char *p = line;
    // 指针移动寻找第一个空格
    while (*p && *p != ' ' && *p != '\n') {
        p++;
    }

    // 指针相减(p - line)计算出相对起始位置的偏移下标
    if (*p == ' ') {
        printf("%td\n", p - line);
    } else {
        printf("-1\n");
    }
    return 0;
}

运行示例

输入:

hello world

输出:

5