注册 登录
编程论坛 C语言论坛

让指针指向字符串中第一个空格字符的位置,但无法实现

hffjhhh 发布于 2020-06-07 02:23, 1931 次点击
设计一个函数,接受一个指向字符串的指针,返回指向该字符串第一个空格字符的指针,如果未找到空格字符,则返回空字符。但以下代码无法实现,问题出在哪?
程序代码:
#include"stdio.h"
char *function(char *p){
    char *q;
    int i=1;
    for(;*p;p++){
        if(*p==' '&&i==1){
            q=p;
            i++;
        }
        else
            continue;
    }
    return *q==' '?q:NULL;
}
int main(void){
    char *t;
    char *e;
    gets(e);
    t=function(e);
    puts(t);
    return 0;
}
5 回复
#2
吹水佬2020-06-07 06:45
#include <stdio.h>
char *function(char *p)
{
    for(; *p && *p!=' '; ++p);
    return (*p?p:NULL);
}
int main(void)
{
    char e[256];
    gets(e);
    char *t=function(e);
    if (t)
        puts(t);
    else
        puts(".NULL.");
    return 0;
}
#3
lin51616782020-06-07 08:53
可能返回空格 和 一个指针的函数在C是不可能做到的
类型不一样
#4
hffjhhh2020-06-07 13:28
回复 2楼 吹水佬
为什么我的代码行不通?
#5
hffjhhh2020-06-07 13:32
以下是引用lin5161678在2020-6-7 08:53:23的发言:

可能返回空格 和 一个指针的函数在C是不可能做到的
类型不一样

但我返回的是一个指向空格字符的指针为什么不可以?
#6
fulltimelink2020-06-07 13:57
当没有空格时,q指针一直没有初始化,所以return时*q是不合法
程序代码:

char *function(char *p){
    char *q = NULL;
    ...
    return q;
}


char * e也是没有分配存储空间

char e[100];

或者malloc
1