读书人

gt;gt;sscanf怎么读取空格

发布时间: 2012-09-13 09:51:52 作者: rapoo

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

读书人网 >C语言

热点推荐