标题:这段代码对于编译器中提示的错误该如何修改?
只看楼主
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
结帖率:90.32%
已结贴  问题点数:20 回复次数:8 
这段代码对于编译器中提示的错误该如何修改?
这段代码对于编译器中提示的错误该如何修改?
#include"stdio.h"
#include"stdlib.h"
char world(char name[5]){
  name[5]={'a','b','s'};
  printf("%s",name);
  return(name);
}
int hello(int a,int b){
  int z;
  z=(a>b)?a:b;
  return(z);
}
main(){
  int x,y,n;
  scanf("%d%d",&x,&y);
  n=hello(x,y);
  printf("%d\n",n);
  printf("请输入名字:\n");
  char a[12];
  scanf("%s",a);
  world(a);
  system("pause");
}
搜索更多相关主题的帖子: hello return 编译器 system include 
2017-06-17 15:56
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:20 
name[5]={'a','b','s'};  c不允许这样赋值

DO IT YOURSELF !
2017-06-17 16:25
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
程序代码:
#include <stdio.h>
#include <string.h>

char* world(char* name)
{
    strcpy(name,"abc");
    printf("%s",name);
    return(name);
}

int main()
{
  printf("请输入名字:\n");
  char a[12];
  //scanf("%s",a);  //既然在函数中赋值 那这里赋值有啥用???
  world(a);
  return 0;
}

DO IT YOURSELF !
2017-06-17 16:29
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
得分:0 
以下是引用wp231957在2017-6-17 16:25:57的发言:

name[5]={'a','b','s'};  c不允许这样赋值

那为什么这样又可以,编译器没有报错:
#include"stdio.h"
#include"stdlib.h"
main(){
  char a[5]={'a','b','s'};
  printf("%s\n",a);
  system("pause");
}
2017-06-17 16:56
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
回复 4楼 b1592187525
这是初始化 大都编译器允许这样赋值
但是你的例子不是初始化  就是赋值c语言中字符串不允许使用=赋值

DO IT YOURSELF !
2017-06-17 17:01
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
得分:0 
以下是引用wp231957在2017-6-17 16:29:41的发言:

#include <stdio.h>
#include <string.h>

char* world(char* name)
{
    strcpy(name,"abc");
    printf("%s",name);
    return(name);
}

int main()
{
  printf("请输入名字:\n");
  char a[12];
  //scanf("%s",a);  //既然在函数中赋值 那这里赋值有啥用???
  world(a);
  return 0;
}

如果改为这样为何编译器提示这样错误?
#include"stdio.h"
#include"stdlib.h"
char world(char name[5]){
  strcpy(name,"abs");
  printf("%s\n",name);
  return(name);
}
main(){
  printf("请输入名字:\n");
  char a[12];
  world(a);
  system("pause");
}
2017-06-17 18:36
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
提示非常明显
函数声明返回CHAR而你实际返回CHAR[]
要是能通过编译才怪

DO IT YOURSELF !
2017-06-17 18:38
b1592187525
Rank: 1
等 级:新手上路
帖 子:86
专家分:4
注 册:2017-2-15
得分:0 
回复 7楼 wp231957
为何这段代码编译后没有任何输出?
#include"stdio.h"
#include"stdlib.h"
main(){
  char name[5];
  strcpy(name[1],'a');
  printf("%s\n%c\n",name,name[1]);
  system("pause");
}
而这段就有输出
#include"stdio.h"
#include"stdlib.h"
main(){
  char name[5];
  strcpy(name,"a");
  printf("%s\n%c\n",name,name[1]);
  system("pause");   
}
2017-06-17 19:23
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
STRCPY是复制字符串而不是字符

DO IT YOURSELF !
2017-06-17 19:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-478677-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.067263 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved