c语言中,输入任意字符串,任意空格隔开

ysb00 2015-06-28 07:07:16
c语言中,输入任意字符串,任意空格隔开。
用c语言打,字符串的长度可变。
听说可以用gets()
但是不会过滤空格。
...全文
1669 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mewiteor 2015-07-02
  • 打赏
  • 举报
回复
引用 4 楼 ysb00 的回复:
二楼的代码解决了问题,但是str[sz-2]=c;str[sz-1]=0;是什么??????????
str用来保存输入的字符串,其容量为sz,下标的范围是0~sz-1,其中str[sz-2]是字符串的最后一个字符,str[sz-1]是字符串的结尾标识'\0'。我这里用getchar()一个字符一个字符的获取,动态扩展str,将getchar()获得的字符c赋值给str的最后一个字符str[sz-2],最后设置一下字符串的结尾
str[sz-1]=0;//0=='\0'
ysb00 2015-07-02
  • 打赏
  • 举报
回复
二楼的代码解决了问题,但是str[sz-2]=c;str[sz-1]=0;是什么??????????
赵4老师 2015-06-29
  • 打赏
  • 举报
回复
仅供参考:
#include <stdio.h>
char s[]="123 ab 4";
char *p;
int v,n,k;
void main() {
    p=s;
    while (1) {
        k=sscanf(p,"%d%n",&v,&n);
        printf("k,v,n=%d,%d,%d\n",k,v,n);
        if (1==k) {
            p+=n;
        } else if (0==k) {
            printf("skip char[%c]\n",p[0]);
            p++;
        } else {//EOF==k
            break;
        }
    }
    printf("End.\n");
}
//k,v,n=1,123,3
//k,v,n=0,123,3
//skip char[ ]
//k,v,n=0,123,3
//skip char[a]
//k,v,n=0,123,3
//skip char[b]
//k,v,n=1,4,2
//k,v,n=-1,4,2
//End.
mewiteor 2015-06-28
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main()
{
    size_t sz=1,i;
    char* str=(char*)malloc(sz*sizeof(char)),*p,c;
    if(!str)return 1;
    while((c=getchar())!='\n')
    {
        p=(char*)realloc(str,++sz*sizeof(char));
        if(!p){free(str);return 1;}
        str=p;
        str[sz-2]=c;
    }
    str[sz-1]=0;
    i=0;
    for(p=strtok(str," ");p;p=strtok(NULL," "))
        printf("%4lu:%s\n",(unsigned long)++i,p);
    free(str);
    return 0;
}
707wk 2015-06-28
  • 打赏
  • 举报
回复
scanf() %s

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧