>>sscanf怎么读取空格
>>sscanf如何读取空格?
用户输入的命令是
dir c:\program files
data的内容是"c:\program"
程序需要将dir后面的内容全部拷贝到Data里面
但是%s不包括空格,程序也不清楚用户输入的路径中有多少空格
球大牛指点..
------解决方案--------------------
getchar()可以读取空格
------解决方案--------------------
- 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的字符指针。