caiwukui

    1. bit t=temp & (1
    2. Code such as printf(foo); often indicates a bug, since foo may contain a % character.  If foo comes from untrusted        user input, it may contain %n, causing the printf() call to write to memory and creating a security hole. 所以如果printf(str)中如果有%n,则会把已经输出的字符串的个数保存到一个变量中,如果没有指定此变量,则会保存到一个不确定的地址。如下例: #include int main(int argc, char *argv[]) {         int i = 10, n = 0;         char * str = "This is test:i=%d,  %n\n";         printf("argv[0] = %s\n", argv[0]);         if(argc > 1)                 printf("Hello world! I am a %s\n", argv[1]);         printf(argv[0]);         printf("\n");         printf(str);         printf("This is test:i=%d,%n", i, &n);         printf("n = %d\n", n);         return 0; }
    3. #include int main(int argc, char *argv[]) {         printf("argv[0] = %s\n", argv[0]);         if(argc > 1)                 printf("Hello world! I am a %s\n", argv[1]);         return 0; } 当我们执行./a.out test时 argv[0]实际上是./a.out argv[1]才是test 不知道之前大家测试的是什么环境,我用的是:debin,gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)

最近访客

< 1/1 >

统计信息

已有110人来访过

  • 芯积分:--
  • 好友:--
  • 主题:--
  • 回复:3

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言