关于C的有趣问题
//以下程序是实现小写转大写程序
#include<stdio.h>
void to_upper(char *str)
{
for(;*str !='\0';str++)
{
if(unsigned(*str-'a')<='z'-'a')
*str-='a'-'A';//小写转成大写
}
}
void main()
{
char *str="Are you ready?";
to_upper(str);
printf("%s\n",str);
}
以上程序在编译和连接都通过了,但却得不出结果!!
char *str="Are you ready?";对应的汇编
004010A8 mov dword ptr [ebp-4],offset string "Are you ready?" (00422020)
改正为:
#include<stdio.h>
void to_upper(char *str)
{
for(;*str !='\0';str++)
{
if(unsigned(*str-'a')<='z'-'a')
*str-='a'-'A';//小写转成大写
}
}
void main()
{
char str[]="Are you ready?";
to_upper(str);
printf("%s\n",str);
}
输出:ARE YOU READY?
char str[]="Are you ready?"对应的汇编:
004010A8 mov eax,[string "Are you ready?" (00422020)]
004010AD mov dword ptr [ebp-10h],eax
004010B0 mov ecx,dword ptr [string "Are you ready?"+4 (00422024)]
004010B6 mov dword ptr [ebp-0Ch],ecx
004010B9 mov edx,dword ptr [string "Are you ready?"+8 (00422028)]
004010BF mov dword ptr [ebp-8],edx
004010C2 
相关文档:
Authentication
Login with:New JS-Kit account
Google Friend Connect
Twitter account
FriendFeed account
Yahoo account
Blogspot URL
JS-Kit account
Haloscan account
OpenID
Dear visitor,
Thanks for your interest in C programming.
In this page, you will find a
list of interesting C p ......
C语言之所以要起名为“C”,是因为它是主要参考那个时候的一门叫B的语言,它的设计者认为C语言是B语言的进步,所以就起名为C语言;但是B语言并不是因为之前还有个A语言,而是B语言的作者为了纪念他的妻子,他的妻子的第一个字母是B;
当C语言发展到顶峰的时刻,出现了一个版本叫C with ......
原文地址:http://www.henryxu.com/post/1.html
C++的格式化字符串经常用作格式化数字的输出、字符串合并和转换等等很多场合。
1. 格式化规定符
━━━━━━━━━━━━━━━━━━━━━━━━━━
符号 &nbs ......
格式: echo "\033[字背景颜色;字体颜色m字符串\033[0m"
例如:
echo "\033[41;36m something here \033[0m"
其中41的位置代表底色, 36的位置是代表字的颜色
那些ascii code 是对颜色调用的始末.
\033[ ; m …… \033[0m
字背景颜色范围:40----49
40:黑
41:深红
42:绿
43:黄色
44:蓝色
45:紫色
4 ......
昨天才看到,但是遇到一些问题,今天解决了,记下……(参考:http://netbeans.org/kb/55/beginning-jni-part1.html)
我用的是Netbeans 6.7,但是和其他的也应该大同小异吧。 基本流程: Java这边的:
创建java文件(带native的),还要记得在类中加入:System.loadLibrary(xxx) 。
然后用javah来生成C/ ......