>>sscanf怎么读取空格

>>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的字符指针。