能力值:
( LV9,RANK:610 )
|
-
-
2 楼
第一题。(本人理解 感觉不太对劲 但想不出来其他的理解方式了)
#define Japan_EarthQuake 9.0
char szJapan_EarthQuake[MAX_PATH] = {0};
sprintf(szJapan_EarthQuake, "%.1f", Japan_EarthQuake);
printf("Japan_EarthQuake is %s", szJapan_EarthQuake);
第二题(本人理解 未翻阅资料)。
int strncpy(char * OUT strDest, const char * IN strSrc, int iLength);
1.assert(strDest && strSrc);
2.assert(iLength>0);
3.确保 (strSrc, strSrc+iLength) 之间没有NULL 不要比较 lstrlen(strSrc) 和 iLength大小
第三题。
。。。
|
能力值:
( LV9,RANK:170 )
|
-
-
3 楼
blueapplez的做法不好。虽然你完成了,但你应该知道我想考核什么内容
blueapplez的第二题没理解题意,我要的是“说明它的行为”,你写的是使用注意事项
5楼的 nevergone 做得有点意思了,但你改了我的define,这不行的。如果define能改,你直接改成 "9.0"了
7楼8楼做对了
第二题还没人做对."说明strncpy的行为",这句话都没有理解
不是让你写如何调用它,是让你写它干了什么
|
能力值:
( LV3,RANK:20 )
|
-
-
4 楼
考宏操作符?
|
能力值:
( LV8,RANK:130 )
|
-
-
5 楼
#define stringer( x ) # x
#define Japan_EarthQuake stringer(9.0)
printf("Japan_EarthQuake is %s", Japan_EarthQuake);
|
能力值:
( LV15,RANK:670 )
|
-
-
6 楼
我要输出这个内容,并希望define改了后,也可以输出正确的值。
把任意东西转为 string . 其中包括本身就是 string 的。
7 楼 , 8 楼 太强悍了. 无法学习, 只能膜拜.
#if defined(UNICODE) || defined(_UNICODE)
#define _T(x) L#x
#define TEXT(x) _T(x)
#else
#define _T(x) #x
#define TEXT(x) _T(x)
#endif
*说一下函数 strncpy 的行为,分三条。允许查资料。
char *strncpy(
char *strDest,
const char *strSource,
size_t count
);
1. 判断参数合法性。
2. 判断源字符串地址是否对齐于 32 位地址边界, 不对齐则进行调整, 使目标地址对齐于 32 位地址边界。
3. 每次按 dword 进行传递。
小弟孤陋寡闻, 求教 taptib 是什么?
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
来吧我来给个正确答案,这也算高手问题??
#define Japan_EarthQuake 9.0
#define _ToStr(x) #x
#define __ToStr(x) _ToStr(x)
#include <stdio.h>
int main(int argc, char **argv)
{
printf("Japan_EarthQuake is %s", __ToStr(Japan_EarthQuake));
return 0;
}
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
#define Japan_EarthQuake 9.0
#define _stringer(x) #x
#define stringer(x) _stringer(x)
printf("Japan_EarthQuake is %s",stringer(Japan_EarthQuake));
|
能力值:
( LV3,RANK:20 )
|
-
-
9 楼
printf("Japan_EarthQuak");
printf("e is 9.0");
|
能力值:
( LV3,RANK:20 )
|
-
-
10 楼
所有宏的参数全部展开!
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
我就看看 我不说话
|
能力值:
( LV4,RANK:50 )
|
-
-
12 楼
#define Japan_EarthQuake 9.0
printf("Japan_EarthQuake is %s", ???);
楼主的意思不清楚,只能在printf前面加代码么?printf 中的 ??? 能替换吗?
|
能力值:
( LV3,RANK:30 )
|
-
-
13 楼
the same as ls
|
能力值:
( LV11,RANK:180 )
|
-
-
14 楼
#include <stdio.h>
int main()
{
#define _ToStr(x) #x
#define __ToStr(x) _ToStr(x)
#define Japan_EarthQuake 9.0
#define printf(x,y) printf(x,__ToStr(Japan_EarthQuake));
printf("Japan_EarthQuake is %s", ???);
return 0 ;
}
// Vsbat
|
能力值:
( LV12,RANK:270 )
|
-
-
15 楼
不明白那个“???”是什么意思,总觉得LiuTaoTao出题不够严谨~~
至于strncpy,在VS的安装目录下可以找到strncpy.asm文件,剩下的就不用多说了吧~~
最后说一句,我只是打酱油的~~
|
能力值:
( LV9,RANK:610 )
|
-
-
16 楼
膜拜 7楼8楼
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
出题有点不够严谨...
不过完全没有理解的只能说明思想差距大比较大.. 进而说明.. 就像我.. 看到是C++的题,我还以为考的一定是和C++特有的... 不想竟然是C/C++共有的.. C语言也有单井号和双井号的..
|
能力值:
( LV2,RANK:150 )
|
-
-
18 楼
strncpy用了长度来对字符串拷贝进行控制,这比起直接用strcpy要好,可以减少缓冲区溢出的可能性。
使得编码变得更加严谨和规范。
|
能力值:
( LV4,RANK:50 )
|
-
-
19 楼
这个可以得分
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
同感,感觉题目没说清楚
|
能力值:
( LV8,RANK:140 )
|
-
-
21 楼
前来观摩和学习各位朋友的解法
|
能力值:
( LV8,RANK:120 )
|
-
-
22 楼
前来观摩和学习, 很喜欢看刘总出的题, 每次都能学到一点东西
|
能力值:
( LV8,RANK:140 )
|
-
-
23 楼
那个宏要用两个定义,这里有点不明白
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
#define Japan_EarthQuake 9.0
#define tostr(x) #(x)
#define int_to_str(x) tostr(x)
printf("Japan_EarthQuake is %s", int_to_str(x));
strncpy 个人理解.
依据strcpy的实现方式,进行字符串赋值,直到遇到0终止.
那么strncpy应该会是在判断是否遇到0之后,加上一句ncurlen>=nlen来实现.
|
能力值:
( LV2,RANK:10 )
|
-
-
25 楼
测试了一下,想法之所以这样调用,是因为在展开第一个宏的时候,有时机将define的宏,也就是把Japan_EarthQuake替换成9.0,然后#转换成字符串"9.0"
原来是这样考虑的,怪不得TEXT()会这样定义。学习了
|
|
|