佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1023|回复: 13

C programming--sscanf的问题

[复制链接]
发表于 29-3-2006 02:30 AM | 显示全部楼层 |阅读模式
有什么方法可以解决这问题?
例如:message[]="Hallo world";

sscanf(message,"%s",&message2);
printf("%s",message2);

最后我的message2只有输出Hallo,我知道好像是空格的问题,但是不知有什么方法可以解决,尤其是遇到string 很长的时候更是头痛。

我的programming很差,所以希望各位高手能帮忙,谢谢
回复

使用道具 举报


ADVERTISEMENT

发表于 29-3-2006 06:00 PM | 显示全部楼层
原帖由 wyewh 于 29-3-2006 02:30 AM 发表
有什么方法可以解决这问题?
例如:message[]="Hallo world";

sscanf(message,"%s",&message2);
printf("%s",message2);

最后我的message2只有输出Hallo,我知道好像是 ...


你是要从keyboard输入Hallo world,还是只是把message[]里的string printf出来罢了?
回复

使用道具 举报

发表于 29-3-2006 06:36 PM | 显示全部楼层
原帖由 wing_s 于 29-3-2006 06:00 PM 发表


你是要从keyboard输入Hallo world,还是只是把message[]里的string printf出来罢了?


其实是想由keyboard中输入, 然后使用sscanf把全部讯息储入另一单个variable里。

by--wyewh

[ 本帖最后由 tankh 于 29-3-2006 06:42 PM 编辑 ]
回复

使用道具 举报

发表于 29-3-2006 09:05 PM | 显示全部楼层
原帖由 tankh 于 29-3-2006 06:36 PM 发表


其实是想由keyboard中输入, 然后使用sscanf把全部讯息储入另一单个variable里。

by--wyewh

那么你要把hallo world输入 message2里面为何好要message的array呢?
你可以这样

char msg[30];
scanf(%s,msg);
printf("%s",msg);
回复

使用道具 举报

发表于 29-3-2006 11:03 PM | 显示全部楼层
char msg[30];
scanf("%s",&msg);
如果msg里我打入名字,年龄,讯息
然后我要sscanf把整个msg分类
sscanf(msg,"%s %d %s",&name,&age,&msg2);

例如我打入的讯息: ken 13 he is a boy
然后我打算打算使用printf("%s",msg2);把msg2 print出来
但最后的输出是:
he
而不是
he is a boy
我知道这是whitespace的关系,有什么方法可以解决吗?
回复

使用道具 举报

发表于 30-3-2006 09:27 AM | 显示全部楼层
原帖由 tankh 于 29-3-2006 11:03 PM 发表
char msg[30];
scanf("%s",&msg);
如果msg里我打入名字,年龄,讯息
然后我要sscanf把整个msg分类
sscanf(msg,"%s %d %s",&name,&age,&msg2);

例如我打入的讯息: ke ...


用gets
回复

使用道具 举报

Follow Us
 楼主| 发表于 30-3-2006 11:04 AM | 显示全部楼层
gets?如何使用?
请问可以解释一下吗?或列出例子
谢谢
回复

使用道具 举报

发表于 30-3-2006 11:20 AM | 显示全部楼层
原帖由 tankh 于 29-3-2006 11:03 PM 发表
char msg[30];
scanf("%s",&msg);
如果msg里我打入名字,年龄,讯息
然后我要sscanf把整个msg分类
sscanf(msg,"%s %d %s",&name,&age,&msg2);

例如我打入的讯息: ke ...

input string好像不用&的
现在没有VC不能试,很久没有动C了不能确定,你看下sscanf("%s %d %s",name,&age,msg2);这样可以吗
回复

使用道具 举报


ADVERTISEMENT

发表于 30-3-2006 12:19 PM | 显示全部楼层
gets(msg);
回复

使用道具 举报

 楼主| 发表于 30-3-2006 02:49 PM | 显示全部楼层
原帖由 wing_s 于 30-3-2006 11:20 AM 发表

input string好像不用&的
现在没有VC不能试,很久没有动C了不能确定,你看下sscanf("%s %d %s",name,&age,msg2);这样可以吗


察看了是真的没有&,但不知为何没有。我的program里有加入&,但割了后好像没差别
回复

使用道具 举报

发表于 1-4-2006 01:29 AM | 显示全部楼层
好象%S是不能接受SPACE。。。

试用%[^\n]
回复

使用道具 举报

发表于 4-4-2006 11:14 PM | 显示全部楼层
举例:

#include <stdio.h>

void main()
{
        char buffer[100];

        char name[20];
        int age;
        char desc[50];

        printf("Enter input string: ");
        gets(buffer);

        sscanf(buffer, "%s %d %[^\n]", name, &age, desc);

        printf(
                "Name : %s\n"
                "Age  : %d\n"
                "Desc : %s\n", name, age, desc);
}


注:name 不能有空格。
"Alex 36 He is a man" 被接受。
但是,"Alex chong 36 He is a man" 将无法以此程序读取。
回复

使用道具 举报

 楼主| 发表于 5-4-2006 03:54 PM | 显示全部楼层
原帖由 liawcv 于 4-4-2006 11:14 PM 发表
举例:

#include <stdio.h>

void main()
{
        char buffer[100];

        char name[20];
        int age;
        char desc[50];

        printf("Enter input string: ");
        get ...


对哦,[^\n]对后尾的string character有效而已吗?那如果要好像显示ALEX CHONG酱的话就没办法了吗?是否要另外写一段function来解决这问题?
回复

使用道具 举报

发表于 7-4-2006 05:33 PM | 显示全部楼层
for scanf [^\n] can be use...
but when display...%s can be use......
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 9-3-2025 09:21 AM , Processed in 0.201967 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表