C程序设计语言 练习7-5 没有理解,请前辈指点
本帖最后由 wow7jiao 于 2019-3-31 20:46 编辑改写第4章中的后缀计算器程序,用scanf函数和(或)sscanf函数实现输入及数的转换.
#include <stdio.h>
#include <stype.h>
#define NUMBER '8'
int getop(char s[])
{
int c, i, rc;
static char lastc[] = " ";---------------------> 这个字符串里面就一个空格
sscanf(lastc, "%c", &c);--------------------->sscanf读一个空字符,c里面应该没有东西啊
lastc = ' ';----------------------------------->这里有lastc = 空格,这三条语句无意义啊
while ((s = c) == ' ' || c == '\t' )
if (scanf("%c", &c) == EOF)
c = EOF;
s = '\0';
if (!isdigit(c) && c != '.')
return c;
i = 0;
if (isdigit(c))
do {
rc = scanf("%x", &c);
if (!isdigit(s = c))
break;
} while (rc != EOF);
if (c == '.')
do {
rc = scanf("%c", &c);
if (!isdigit(s[++i] c))
break;
} while (rc != EOF);
s = '\0';
if (rc != EOF)
lastc = c;
return NUMBER;
} wow7jiao 发表于 2019-3-31 22:20
意味是静态的,可以反复存储。
你要看清楚,lastc数组是static的
static意味着什么? 人造人 发表于 2019-3-31 22:09
你要看清楚,lastc数组是static的
static意味着什么?
意味是静态的,可以反复存储。 本帖最后由 wow7jiao 于 2019-4-10 10:18 编辑
老师,lastc[]这个没有使用啊。,sscanf是从lastc读字符串然后把符合条件的字符放进c里,空格又不是字符 wow7jiao 发表于 2019-4-10 10:16
老师,lastc[]这个没有使用啊。,sscanf是从lastc读字符串然后把符合条件的字符放进c里,空格又不是字符
空格不是字符
空格是字符,并且空格的ascii值是0x20
https://fishc.com.cn/thread-67427-1-1.html 人造人 发表于 2019-4-10 12:18
空格是字符,并且空格的ascii值是0x20
https://fishc.com.cn/thread-67427-1-1.html
请问老师 ,sscanf(lastc, “%c”, &c)后,lastc的内容 是什么 ? wow7jiao 发表于 2019-4-10 22:35
请问老师 ,sscanf(lastc, “%c”, &c)后,lastc的内容 是什么 ?
https://baike.so.com/doc/6754426-6969009.html 人造人 发表于 2019-4-10 22:41
https://baike.so.com/doc/6754426-6969009.html
里面没有说源字符串会发生什么变化 http://www.runoob.com/cprogramming/c-function-scanf.html
http://www.runoob.com/cprogramming/c-function-sscanf.html
http://www.runoob.com/cprogramming/c-function-printf.html
http://www.runoob.com/cprogramming/c-function-sprintf.html
自己自学这4个函数
人造人 发表于 2019-4-11 12:17
http://www.runoob.com/cprogramming/c-function-scanf.html
http://www.runoob.com/cprogramming/c-funct ...
lastc 是const char *str,按原理是没有修改的.
后面的lastc = ' '没有意义啊(复习题里面的说明是clear last character)
wow7jiao 发表于 2019-4-11 13:23
lastc 是const char *str,按原理是没有修改的.
后面的lastc = ' '没有意义啊(复习题里面的说明是 ...
本帖最后由 wow7jiao 于 2019-4-11 22:12 编辑
人造人 发表于 2019-4-11 21:49
第一句 和 第二句我已经明白了 ,空格 也是一个字符 ,sscanf()把空格放进c里
但是第三句是个错的啊 lastc = ' '
在声明变量时用 const 修饰这个变量的类型,如 const int a,这表示这个变量的值在初始化后就不可再更改。static 影响的是一个对象或变量的“生存期”,这和能否修改变量的值没有关系。函数中的局部变量在被 static 修饰后,该变量只会被初始化一次,然后会在整个程序执行期间都有效,也就是扩展了变量的生存期。
sscanf()的第一个 参数 是一个用const修饰的 字符指针 wow7jiao 发表于 2019-4-11 22:04
第一句 和 第二句我已经明白了 ,空格 也是一个字符 ,sscanf()把空格放进c里
但是第三句是个错的 ...
老师
声明
下面是 sscanf() 函数的声明。
int sscanf(const char *str, const char *format, ...)-这个第一参数是const,就是一个常量,现在放进static char lastc[] = ' ',是一个静态局部变量,静态局部变量是不是也可以当常量用(这种写法很新颖)
页:
[1]