数组与字符串合并

zyzy577048814 2015-11-17 08:17:32
用什么方法能够最简单的把整形的二维数组和一个字符串赋值给另一个字符串?越简单越好。例如
int message1[3][3]。 = {{1,0,0},{0,0,0},{0,0,0}};
char message2=“help”
char message
把message1和message2合并到message中。本人初学小白,还请各位大神帮助指导,再次感谢
...全文
205 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2015-11-18
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>

#define    LEN    64

int main(void)
{
	int message1[3][3] = { { 1,0,0 },{ 0,0,0 },{ 0,0,0 } };
	const char *message2 = "help";
	//char *message = new char[100];
	char *message = NULL;
	message = (char *)malloc(sizeof(char) * LEN);
	if (NULL == message) {
		fprintf(stderr, "malloc error: %s\n", strerror(errno));
		return 1;
	}
	//memset(message, 0, 100);
	memset(message, 0, LEN);
	sprintf(message, "%s%d%d%d%d%d%d%d%d%d",
		message2,
		message1[0][0], message1[0][1], message1[0][2],
		message1[1][0], message1[1][1], message1[1][2],
		message1[2][0], message1[2][1], message1[2][2]);
	printf("%s", message);
        free(message);
	return 0;
}
C语言中通过malloc/realloc/calloc来申请堆上的空间;
zyzy577048814 2015-11-18
  • 打赏
  • 举报
回复
引用 6 楼 zyzy577048814 的回复:
[quote=引用 5 楼 jiht594 的回复:]
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;


int main ()
{
    int message1[3][3] = {{1,0,0},{0,0,0},{0,0,0}};
    const char *message2 = "help";
    char *message = new char[100];
    memset(message, 0, 100);
    sprintf(message, "%s%d%d%d%d%d%d%d%d%d",
            message2,
            message1[0][0], message1[0][1], message1[0][2],
            message1[1][0], message1[1][1], message1[1][2],
            message1[2][0], message1[2][1], message1[2][2]);
    cout << message << endl;
    return 0 ;
}
我把他修改成c语言怎么不对了,能帮我看一看吗? int main() { int message1[3][3] = { { 1,0,0 },{ 0,0,0 },{ 0,0,0 } }; const char *message2 = "help"; //char *message = new char[100]; char *message = NULL; //memset(message, 0, 100); sprintf(message, "%s%d%d%d%d%d%d%d%d%d", message2, message1[0][0], message1[0][1], message1[0][2], message1[1][0], message1[1][1], message1[1][2], message1[2][0], message1[2][1], message1[2][2]); printf("%c", message); return 0; }[/quote] 可以了,我把 char *message = NULL;改成 char message[100]; 输出来了,不过这个sprintf得手工把数组一个一个打进去。要是数组大了就不太实用啊,要是能有for就好了!
zyzy577048814 2015-11-18
  • 打赏
  • 举报
回复
引用 5 楼 jiht594 的回复:
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;


int main ()
{
    int message1[3][3] = {{1,0,0},{0,0,0},{0,0,0}};
    const char *message2 = "help";
    char *message = new char[100];
    memset(message, 0, 100);
    sprintf(message, "%s%d%d%d%d%d%d%d%d%d",
            message2,
            message1[0][0], message1[0][1], message1[0][2],
            message1[1][0], message1[1][1], message1[1][2],
            message1[2][0], message1[2][1], message1[2][2]);
    cout << message << endl;
    return 0 ;
}
我把他修改成c语言怎么不对了,能帮我看一看吗? int main() { int message1[3][3] = { { 1,0,0 },{ 0,0,0 },{ 0,0,0 } }; const char *message2 = "help"; //char *message = new char[100]; char *message = NULL; //memset(message, 0, 100); sprintf(message, "%s%d%d%d%d%d%d%d%d%d", message2, message1[0][0], message1[0][1], message1[0][2], message1[1][0], message1[1][1], message1[1][2], message1[2][0], message1[2][1], message1[2][2]); printf("%c", message); return 0; }
jiht594 2015-11-18
  • 打赏
  • 举报
回复
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

using namespace std;


int main ()
{
    int message1[3][3] = {{1,0,0},{0,0,0},{0,0,0}};
    const char *message2 = "help";
    char *message = new char[100];
    memset(message, 0, 100);
    sprintf(message, "%s%d%d%d%d%d%d%d%d%d",
            message2,
            message1[0][0], message1[0][1], message1[0][2],
            message1[1][0], message1[1][1], message1[1][2],
            message1[2][0], message1[2][1], message1[2][2]);
    cout << message << endl;
    return 0 ;
}
zyzy577048814 2015-11-18
  • 打赏
  • 举报
回复
顶一下。有人知道吗?
赵4老师 2015-11-18
  • 打赏
  • 举报
回复
你这个效率略低。
zyzy577048814 2015-11-18
  • 打赏
  • 举报
回复
引用 9 楼 zhao4zhong1 的回复:
狗尾续貂:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define    LEN    64
int main() {
    int L,message1[3][3] = { { 1,0,0 },{ 0,0,0 },{ 0,0,0 } };
    char *message2="help";
    char *message = NULL,*p;
    message = (char *)malloc(sizeof(char) * LEN);
    if (NULL == message) {
        fprintf(stderr, "malloc error: %s\n", strerror(errno));
        return 1;
    }
    p=message;
    L=sprintf(p,"%s",message2);p+=L;
    for (int y=0;y<3;y++)
    for (int x=0;x<3;x++) {
        L=sprintf(p,"%d",message1[y][x]);p+=L;
    }
    printf("[%s]\n", message);
    free(message);
    return 0;
}
//[help100000000]
//
嗯嗯,我中午写出来了,弄了个小封装,写成子函数了,不过还是谢谢啦! #include <stdio.h> #include <stdlib.h> #define LEN 64 #define M 3 #define N 3 int get_message(char *message2, int message1[M][N]); int main(void) { int message1[M][N] = { { 1,0,0 },{ 0,0,0 },{ 0,0,0 } }; const char *message2 = "help"; message2=get_message(message2, message1); printf("%s", message2); return 0; } int get_message(char *message2,int message1[M][N]) { int i, j; char *message = NULL; message = (char *)malloc(sizeof(char) * LEN); if (NULL == message) { fprintf(stderr, "malloc error: %s\n", strerror(errno)); return 1; } memset(message, 0, LEN); sprintf(message, "%s",message2); //printf("%s", message); for (i = 0;i < M;i++) for (j = 0;j < N;j++) { sprintf(message, "%s%d", message, message1[i][j]); } //printf("%s", message); return message; free(message); }
赵4老师 2015-11-18
  • 打赏
  • 举报
回复
作为一个C程序员,对 scanf,sscanf,fscanf printf,sprintf,fprintf 这类函数的用法,还是要做到“拳不离手,曲不离口”的。
赵4老师 2015-11-18
  • 打赏
  • 举报
回复
狗尾续貂:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define    LEN    64
int main() {
    int L,message1[3][3] = { { 1,0,0 },{ 0,0,0 },{ 0,0,0 } };
    char *message2="help";
    char *message = NULL,*p;
    message = (char *)malloc(sizeof(char) * LEN);
    if (NULL == message) {
        fprintf(stderr, "malloc error: %s\n", strerror(errno));
        return 1;
    }
    p=message;
    L=sprintf(p,"%s",message2);p+=L;
    for (int y=0;y<3;y++)
    for (int x=0;x<3;x++) {
        L=sprintf(p,"%d",message1[y][x]);p+=L;
    }
    printf("[%s]\n", message);
    free(message);
    return 0;
}
//[help100000000]
//
zyzy577048814 2015-11-17
  • 打赏
  • 举报
回复
引用 1 楼 fefe82 的回复:
你期望得到的结果是什么?
期望得到“help100000000”
zyzy577048814 2015-11-17
  • 打赏
  • 举报
回复
期望得到“help100000000”
fefe82 2015-11-17
  • 打赏
  • 举报
回复
你期望得到的结果是什么?

70,040

社区成员

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

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