关于数组的问题

chenlei1700 2008-12-09 01:37:33
比如说我定义一个数组
char a[100];
然后puts(a);
因为我没在a里写过任何东西 能不能输出的时候也什么东西都没有啊?
我在写个让输入的字符串倒着输出的程序 结果对了 但是输出了一些多余的东西



#include<string.h>
#include<stdio.h>
void reverse_string(char *str1,char *str2);
void main(){
char a[100],*b,*c;
b=gets(a);
puts(b);
reverse_string(a,c);
}

void reverse_string(char *str1,char *str2){
int n,m,p=0;
char str3[100];

n=strlen(str1);

for(m=n-1;m>=0;m--){
str3[p]=str1[m];
p++;
}


puts(str3);


}


asdfg
asdfg
gfdsa烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫
烫烫烫烫烫烫烫烫烫烫?
Press any key to continue

我该怎么把后面那些没用的去掉阿
还有 我感觉主函数的变量b作用太小了 能不能在gets()的时候直接把数据写到a[100]里呢
a[100]如何能变成指针呢?因为我觉得变成指针后能输入的字母会更多些
...全文
63 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyuer5222 2008-12-09
  • 打赏
  • 举报
回复


#include <string.h>
#include <stdio.h>
#define BUF_SIZE 100
void reverse_string(char *str1);
int main()
{
char a[BUF_SIZE];
gets(a);
puts(a);
reverse_string(a);
return 0;
}

void reverse_string(char *str1)
{
int n, m, p = 0;
char str3[100];
n = strlen(str1);
for (m = n - 1; m >= 0; m--) {
str3[p] = str1[m];
p++;
}
str3[p]='\0';
puts(str3);
}
chenlei1700 2008-12-09
  • 打赏
  • 举报
回复
谢谢 明白了
还有就是用gets()函数往a[]里赋值得时候必须用一个令外的指针么 为什么用a本身不行呢
xyllucky 2008-12-09
  • 打赏
  • 举报
回复
a可以变成指针,但是会有一个问题,指针只是一个地址,所以当你需要用a来存放输入的字符时需要给a分配空间。
如果你想做成动态的,你可以把main变成有参数输入的方式,你只要输入字符串和字符串的长度,程序需要处理的就是读取输入的长度,按照实际长度+1给a分配空间(使用malloc分配),+1是为了存放字符结束符'\0'用的。malloc之后记得要赋初值,这样保证字符串有结尾符,就不会出现乱码了。还有一定要记住,一旦使用malloc分配空间一定要使用free释放空间,否则会内存泄露。
malloc是在堆中分配空间,需要释放,如果直接定义a[100],是在栈分配,一点程序退出,栈自动释放。
灵活是有代价的。

chenlei1700 2008-12-09
  • 打赏
  • 举报
回复
那我在给a赋值的时候用的
gets()必须得用到一个另外的指针b么
我就感觉b可以不用的
但是如果写成 a=gets(a);
还运行不了
xyllucky 2008-12-09
  • 打赏
  • 举报
回复
你要使用memset(a,0,100),
或者 for(i = 0;i<100;i++){a[i]=0}
总之你要把a[100]赋初值,才不会显示一堆的'烫'
hhyttppd 2008-12-09
  • 打赏
  • 举报
回复
reverse_string中

void reverse_string(char *str1,char *str2){
int n,m,p=0;
char str3[100];

n=strlen(str1);

for(m=n-1;m>=0;m--){
str3[p]=str1[m];
p++;
}


str3[p] = '\0'; //加上这句

puts(str3);


}

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧