首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

>>sscanf怎么读取空格

2012-09-13 
sscanf如何读取空格?C/C++ codechar* strCmdfgets(strCmd, 50, stdin)sscanf( strCmd, %*s%s, Data)

>>sscanf如何读取空格?

C/C++ code
char* strCmd;fgets(strCmd, 50, stdin);sscanf( strCmd, "%*s%s", Data);


用户输入的命令是

dir c:\program files

data的内容是"c:\program"

程序需要将dir后面的内容全部拷贝到Data里面

但是%s不包括空格,程序也不清楚用户输入的路径中有多少空格

球大牛指点..


[解决办法]
getchar()可以读取空格
[解决办法]
C/C++ code
#include <stdio.h>#include <string.h>int main(int argc, char* argv[]){    char* strCmd = "dir \"c:\\program files\"";    char Data[32];    char ch;    int i;    int flag;    i = 0;    flag = 0;    do{        ch = *strCmd++;        if(ch == '\"')        {            flag = !flag;        }        else if(flag)        {            Data[i++] = ch;        }    }while(ch != '\0');    Data[i] = '\0';    printf("%s\n", Data);    return 0;}
[解决办法]
喂喂,LZ你的strCmd分配内存了么?野指针是很危险的啊。
指针只有地址,必须还有对应的内存才可以,否则你就是向随机内存写入数据啊。
应该用char strCmd[256];
50实在太短了,至少也得MAX_PATH(256)个字符吧。
你只要用strstr搜索第一个空格的位置sp,然后strcpy从stCmd+sp到Data就可以了。

[解决办法]
sscanf(strcmd,"%[a-zA-Z0-9 ]",Data);

改为

sscanf(strcmd,"%[^\n]",Data);

就行了。

记得移动strcmd的字符指针。

热点排行