C中双引号和单引号的区别

在我们讨论之前先看一个函数: ``` #include #include #include int parse_cmd_num(int count,int *dest) { int j = 0; char *p = NULL; char *q = NULL; char sbuf[20] = ": 12,23,34"; p = sbuf; p++; while(count--) { p++; *(dest+j)=atoi(p); q = strstr(p,','); sprintf("parse_cmd_num p = %s",p); p = q; j++; } return 1; } int main() { int i = 0; int array[3]={0}; parse_cmd_num(3,array); for(i=0;i<3;i++){ printf("array %d:%d\n",i,array[i]); } return 0; } ``` **这个函数的作用是取字符串中的数字。程序逻辑看起来没有什么问题,但是奇怪的是 `sprintf("parse_cmd_num p = %s",p);`这个没有执行。说明程序有错误的,但是错在哪里尼?**

看下单,双引号的定义:
单引号'' 引起的一个字符代表一个整数,整数值对应于该字符在编译器采用的字符集中的序列值。
双引号"" 引起的字符串代表的是一个指向无名数组起始字符的指针。

当strstr即使要匹配字符也要用双引号表示,否则会当作整数处理。这样程序就会发生错误。C语言中数据的类型还是特别重要的。将程序中的q = strstr(p,',');改为q = strstr(p,",");就能正常运行了。

posted @ 2019-07-10 11:32  穷书者  阅读(430)  评论(0编辑  收藏  举报