返回列表 回复 发帖

隐式声明与内建函数 ‘malloc’ 不兼容?跪求帮忙!

小弟是初学者,今天在Linux下用C编了个小程序:
#include<stdio.h>
int display1(char *string);
int display2(char *string);

int main()
{
   char string[]="Embeded Linux";
   display1(string);
   display2(string);
}
int display1(char *string)
{
   printf("The original string is %s \n",string);
}
int display2(char *string1)
{
   char *string2;
   int size,i;
   size=strlen(string1);
   string2=(char*)malloc(size+1);
   for(i=0;i<size;i++)
      string2[size -i]=string1;
   string2[size+1]='';
   printf("The string afterward is %s\n",string2);
用gcc 编译时,出现:
greet.c: 在函数 ‘display2’ 中:
greet.c:19: 警告:隐式声明与内建函数 ‘strlen’ 不兼容
greet.c:20: 警告:隐式声明与内建函数 ‘malloc’ 不兼容
greet.c:23:20: 错误:空的字符常量

小弟第一次接触,请问我该怎么解决?谢谢各位大侠!
  1. #include<stdio.h>
  2. #include<string.h>
  3. #include<stdlib.h>
  4. int display1(char *string);
  5. int display2(char *string);

  6. int main()
  7. {
  8.    char string[]="Embeded Linux";
  9.    display1(string);
  10.    display2(string);
  11.    return 0;
  12. }
  13. int display1(char *string)
  14. {
  15.    printf("The original string is %s \n",string);
  16.    return 0;
  17. }
  18. int display2(char *string1)
  19. {
  20.    char *string2;
  21.    int size,i;
  22.    size=strlen(string1);
  23.    string2=(char*)malloc(size+1);
  24.    for(i=0;i<size;i++)
  25.       string2[i]=*(string1+i);
  26.    string2[size+1]='\0';
  27.    printf("The string afterward is %s\n",string2);
  28.    return 0;
  29. }
复制代码
几个问题,
1  strlen在string.h中。malloc在stdlib.h中
2  函数返回直定义成int,最好return #
3  string2[size+1]=''; 改成   string2[size+1]='\0';
4  不知道你display2是要干什么,特别是这一行不太对,string2[size -i]=string1;。string2是一个char[],string2[size-i]是一个char,string1是一个char*。。。。。。。我给该了,现在输出的结果是:
The original string is Embeded Linux
The string afterward is Embeded Linux
记住用free;不然浪费内存啊!!!
返回列表