>>sscanf如何读取空格?
char* strCmd;fgets(strCmd, 50, stdin);sscanf( strCmd, "%*s%s", Data);
#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的字符指针。