当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页
作者 内容
1 楼 
 文章标题 : [问题]靠,这样也能通过
帖子发表于 : 2008-08-27 15:59 

注册: 2006-05-27 14:58
帖子: 182
地址: 西安
送出感谢: 0 次
接收感谢: 0 次
一哥们学C语言,这是他写的字符串反转:
代码:
void strrev(char str[])

{
       int len = strlen(str);

       char tmp[len];                 //这里是重点,我敢保证此程序在gcc下被编译通过并正常执行了

       tmp[0] = '\0';                  //可能老的gcc会编译不通过,太神奇了。

       for (int i = len; i > 0; --i)

       {

        strncat(tmp, &str[i], 1);

       }

       strcpy(str, tmp);

}

没有深入研究,不过tmp[]数组没有存放在栈内。请高手指点一下


_________________
_________________
ekiga: 699716@egika.net


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2008-08-28 17:44 
头像

注册: 2008-08-25 10:40
帖子: 649
送出感谢: 0 次
接收感谢: 0 次
:cry: :cry:


_________________
灌水专用


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2008-08-28 17:49 
头像

注册: 2005-03-30 0:27
帖子: 3294
送出感谢: 0 次
接收感谢: 2
C99 标准的动态数组


_________________
跃过无数的时间断层,只为了在


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2008-08-28 17:49 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
引用:
for (int i = len; i > 0; --i)
这个 不符合 c99 标准。。


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2008-08-28 23:54 

注册: 2007-06-26 20:53
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
yaoms 写道:
引用:
for (int i = len; i > 0; --i)
这个 不符合 c99 标准。。

符合的。
两者也都是 GNU 的扩展。gcc 默认使用 -std=gnu89 。


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2008-08-29 0:13 
头像

注册: 2005-08-15 0:04
帖子: 1880
地址: 南7技校
送出感谢: 0 次
接收感谢: 0 次
哇,C/C++专家糖糖mm惊现。。。


_________________
飞得高,飞得低,学习再学习,多少大秘密!
http://zhan.blog.ubuntu.org.cn


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2008-08-29 8:02 
头像

注册: 2006-05-19 9:54
帖子: 1822
地址: Shanghai
送出感谢: 2
接收感谢: 11
虽然是c99标准,但是gcc默认是打开动态数组功能的,所以一点问题都没有


_________________
ニンニク入れますか?
x60 with gentoo


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2008-08-30 19:00 

注册: 2006-05-27 14:58
帖子: 182
地址: 西安
送出感谢: 0 次
接收感谢: 0 次
呵呵,学习了


_________________
_________________
ekiga: 699716@egika.net


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2008-08-30 19:03 
头像

注册: 2006-07-02 11:16
帖子: 12522
地址: 廣州
送出感谢: 0 次
接收感谢: 8
gcc 的扩展


_________________
^_^ ~~~
要理解递归,首先要理解递归。

地球人都知道,理论上,理论跟实际是没有差别的,但实际上,理论跟实际的差别是相当大滴。


页首
 用户资料  
 
10 楼 
 文章标题 :
帖子发表于 : 2008-09-01 13:30 
头像

注册: 2007-11-05 19:26
帖子: 635
送出感谢: 0 次
接收感谢: 0 次
加上 -std=gnu99就能编译通过了,不过程序中有个小错误就是tmp少了个字节,反转后会把原字符串的首字符给丢了。


_________________
Everything that has a beginning has an end.


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2008-09-01 13:33 

注册: 2006-09-11 22:47
帖子: 2841
送出感谢: 0 次
接收感谢: 4
什么叫没有问题?

楼主这程序,能编译过,但是运行肯定有问题。因为为tmp分配的长度少了一个字节,导致后面会缺一个放'\0'字节的空间的。


页首
 用户资料  
 
12 楼 
 文章标题 :
帖子发表于 : 2008-09-01 13:33 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
manphiz 写道:
yaoms 写道:
引用:
for (int i = len; i > 0; --i)
这个 不符合 c99 标准。。

符合的。
两者也都是 GNU 的扩展。gcc 默认使用 -std=gnu89 。

但是我执行报这个:
代码:
t.c: In function ‘main’:
t.c:3: error: ‘for’ loop initial declaration used outside C99 mode


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
13 楼 
 文章标题 :
帖子发表于 : 2008-09-01 13:34 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
yaoms 写道:
manphiz 写道:
yaoms 写道:
引用:
for (int i = len; i > 0; --i)
这个 不符合 c99 标准。。

符合的。
两者也都是 GNU 的扩展。gcc 默认使用 -std=gnu89 。

但是我执行报这个:
代码:
t.c: In function ‘main’:
t.c:3: error: ‘for’ loop initial declaration used outside C99 mode


代码附上:
代码:
#include <stdio.h>
int main(){
for (int i = 0 ; i<=3; i++)
{
   ;
}
}


_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'


页首
 用户资料  
 
14 楼 
 文章标题 :
帖子发表于 : 2008-09-01 13:47 

注册: 2006-09-11 22:47
帖子: 2841
送出感谢: 0 次
接收感谢: 4
yaoms 写道:
manphiz 写道:
yaoms 写道:
引用:
for (int i = len; i > 0; --i)
这个 不符合 c99 标准。。

符合的。
两者也都是 GNU 的扩展。gcc 默认使用 -std=gnu89 。

但是我执行报这个:
代码:
t.c: In function ‘main’:
t.c:3: error: ‘for’ loop initial declaration used outside C99 mode


你编译的时候肯定没带 C99参数: gcc -std=gnu99


页首
 用户资料  
 
15 楼 
 文章标题 :
帖子发表于 : 2008-09-01 13:48 
头像

注册: 2007-10-19 14:51
帖子: 4953
地址: 深圳
送出感谢: 0 次
接收感谢: 2
manphiz 说 gcc 默认使用的阿,我还要带?那为什么叫做默认?

PS. 2007-06-26 注册,发了一个贴。好潜水员阿


附件:
fvwm-135005.png
fvwm-135005.png [ 18.95 KiB | 被浏览 826 次 ]



_________________
Nothing 有事请发邮件到 yms541 AT gmail.com
alias 爱慕颇雷尔='mplayer'
页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 16 篇帖子 ]  前往页数 1, 2  下一页

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译