| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1560 人关注过本帖
标题:字符串的赋值及输出
只看楼主 加入收藏
拜见大佬
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2016-11-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
字符串的赋值及输出
#include<stdio.h>
char *mystrspc(char *string, int n);
int main ()
{
    char *string;
    int n;
    scanf("%d",&n);
    char *mystrspc(char *string, int n);
    return 0;
}
char *mystrspc(char *string, int n)
{
    int i;
    string[0]='+';
    for(i=1;i<=n;i++)
    {
        string[i]='\0';
    }
    string[n+1]='+';
    for(i=0;i<n+2;i++)
      printf("%d",string[i]);
}
为什么输出为空啊
搜索更多相关主题的帖子: return 字符串 
2016-12-01 21:51
a120750
Rank: 4
等 级:业余侠客
威 望:1
帖 子:63
专家分:243
注 册:2016-3-13
收藏
得分:10 
程序代码:
#include<stdio.h>
char *mystrspc(char *string, int n);
int main ()
{
    char *string;        //很严重一个问题,,没有初始化指针直接传送过去。野指针。
    int n;
    scanf("%d",&n);
    char *mystrspc(char *string, int n);
    return 0;
}
char *mystrspc(char *string, int n)//此处传送过去的 string 其实不是你传过来的 string了, 所以得不到你想要的数据,
{
    int i;
    string[0]='+';
    for(i=1;i<=n;i++)
    {
        string[i]='\0';
    }
    string[n+1]='+';
    for(i=0;i<n+2;i++)
      printf("%d",string[i]);
}
2016-12-01 21:55
拜见大佬
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2016-11-24
收藏
得分:0 
回复 2楼 a120750
char *mystrspc(char *string, int n)//此处传送过去的 string 其实不是你传过来的 string了, 所以得不到你想要的数据
那这个该怎么改,我有点不太懂
2016-12-01 22:08
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
收藏
得分:10 
你咋还把函数声明的两遍
都没有调用函数


[此贴子已经被作者于2016-12-1 22:40编辑过]

2016-12-01 22:39
拜见大佬
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2016-11-24
收藏
得分:0 
回复 4楼 ldsh304
下面的是给函数下定义,第二行不就调用了吗
2016-12-01 22:42
a120750
Rank: 4
等 级:业余侠客
威 望:1
帖 子:63
专家分:243
注 册:2016-3-13
收藏
得分:0 
回复 3楼 拜见大佬
#include<stdio.h>
char *mystrspc(char *string, int n);
int main ()
{
//把这个 char * string  改为  char string[1024];
//或者 为 string malloc 内存。。
    char *string;        //很严重一个问题,,没有初始化指针直接传送过去。野指针。
    int n;
    scanf("%d",&n);
    char *mystrspc(char *string, int n);
    return 0;
}
char *mystrspc(char *string, int n)//此处传送过去的 string 其实不是你传过来的 string了, 所以得不到你想要的数据,
{
    int i;
    string[0]='+';
    for(i=1;i<=n;i++)
    {
        string[i]='\0';
    }
    string[n+1]='+';
    for(i=0;i<n+2;i++)
      printf("%d",string[i]);
}
2016-12-01 22:51
a120750
Rank: 4
等 级:业余侠客
威 望:1
帖 子:63
专家分:243
注 册:2016-3-13
收藏
得分:0 
回复 4楼 ldsh304
下面那里叫函数实现,,第一个才是声明。。
2016-12-01 22:53
拜见大佬
Rank: 1
等 级:新手上路
帖 子:12
专家分:7
注 册:2016-11-24
收藏
得分:0 
回复 6楼 a120750
第二个问题好像还是没有解决,改了之后输出还是为空
2016-12-01 23:25
a120750
Rank: 4
等 级:业余侠客
威 望:1
帖 子:63
专家分:243
注 册:2016-3-13
收藏
得分:0 
回复 8楼 拜见大佬
把你改的代码发出来。。。
2016-12-02 09:35
ldsh304
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:7
帖 子:242
专家分:755
注 册:2016-1-18
收藏
得分:0 
回复 7楼 a120750
程序代码:
#include<stdio.h>
#include <malloc.h>
char *mystrspc(char *string, int n);//这里函数声明
int main ()
{
    char *string;
    int n;
    scanf("%d",&n);
    //char *mystrspc(char *string, int n);//这里函数声明,并没有调用
    mystrspc(string, n);//这才是函数调用
    return 0;
}

char *mystrspc(char *string, int n)//这是函数实现
{
    string = (char *) malloc((n+2) * sizeof(char));//要为数组分配空间
    int i;
    string[0]='+';
    for(i=1;i<=n;i++)
    {
        string[i]='\0';
    }
    string[n+1]='+';
    for(i=0;i<n+2;i++)
      printf("%d",string[i]);//这输出的是字符的ASCII值,应用%c输出
    free(string);
    string = NULL;
}



[此贴子已经被作者于2016-12-2 13:09编辑过]

2016-12-02 12:47
快速回复:字符串的赋值及输出
数据加载中...
 
   



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

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