免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2032 | 回复: 6
打印 上一主题 下一主题

[C] 类型冲突 求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-24 00:11 |只看该作者 |倒序浏览
#include<stdio.h>
#include<string.h>
#define N 20
int main(){
char a[N],b[N];
int n;
printf("输入字符串(<20):");
gets(a);
printf("你输入的是:\n");
puts(a);
printf("你想删除第几个?\n");
scanf("%d",&n);
fun(a,b,n);
}
void fun(char a[],char b[],int n){
int i,j=strlen(a);
int m=n-1;
for(i=0;i>j;i++){
        if(i!=m) b[i]=a[i];
        else;
}
puts(b);
}
为什么类型冲突 不是void吗?

论坛徽章:
0
2 [报告]
发表于 2012-09-24 01:16 |只看该作者
先声明后使用,fun函数定义在调用之后,那调用之前要先声明fun函数

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
3 [报告]
发表于 2012-09-24 10:43 |只看该作者
本帖最后由 linux_c_py_php 于 2012-09-24 11:14 编辑
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>

  4. #define MAX_LENGTH (20 + 2)

  5. int func(char a[], char b[], int n); // function declaration

  6. int main(int argc, char* const argv[]) {
  7.         char a[MAX_LENGTH];
  8.         char b[MAX_LENGTH];
  9.         int n;

  10.         printf("输入字符串(<20):");
  11.         fflush(stdout);

  12.         if (! fgets(a, MAX_LENGTH, stdin))
  13.                 return 1;

  14.         int len = strlen(a);

  15.         if (a[len - 1] != '\n') {//exceed 20 bytes long
  16.                 fprintf(stderr, "input>20\n");
  17.                 return 2;
  18.         }

  19.         a[len - 1] = '\0';

  20.         printf("你输入的是:\n%s\n", a);

  21.         printf("你想删除第几个?\n");

  22.         if (1 != scanf("%d", &n))
  23.                 return 3;

  24.         int ret;

  25.         if (! (ret = func(a, b, n)))
  26.                 printf("%s\n", b);
  27.         else
  28.                 fprintf(stderr, "func=%d\n", ret);
  29.         return 0;
  30. }

  31. int func(char a[], char b[], int n) {
  32.         if (!a || !b || n >= 20 || n < 0)
  33.                 return -1;

  34.         int len = strlen(a);
  35.         int i, j;

  36.         if (n >= len)
  37.                 return -1;

  38.         for (i = 0, j = 0; i < len; ++ i) {
  39.                 if (i != n)
  40.                         b[j++] = a[i];
  41.         }

  42.         b[j] = '\0';
  43.         return 0;
  44. }
复制代码
和这个代码比对一下, 看看为什么这些地方要这么写.

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
4 [报告]
发表于 2012-09-24 10:48 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
5 [报告]
发表于 2012-09-24 10:56 |只看该作者
一个小程序, 只有main函数使用func, 放里面有什么不妥?

pmerofc 发表于 2012-09-24 10:48
回复 3# linux_c_py_php

论坛徽章:
2
程序设计版块每日发帖之星
日期:2015-06-17 22:20:00每日论坛发贴之星
日期:2015-06-17 22:20:00
6 [报告]
发表于 2012-09-24 10:59 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
4
水瓶座
日期:2013-09-06 12:27:30摩羯座
日期:2013-09-28 14:07:46处女座
日期:2013-10-24 14:25:01酉鸡
日期:2014-04-07 11:54:15
7 [报告]
发表于 2012-09-24 11:13 |只看该作者
那我挪出去得了, 这段代码的意图并不在这里, 很多安全性的编程需要注意是我想告诉楼主的.

pmerofc 发表于 2012-09-24 10:59
我认为
对于初学者来说
这可能会传递一个错误的信息或暗示
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP