English 中文(简体)
c)
原标题:memcpy command in c
  • 时间:2011-11-09 13:44:04
  •  标签:
  • c
#include<stdio.h>
#include<string.h>
int main()
{
  unsigned char *s;
  unsigned char a[30]="Hello world welcome";
  memcpy(s,&a,15);
  printf("%s",s);
  return 0;
}

这使我陷入分裂的错误。 请帮助我确定这一错误

最佳回答

<代码>a已成为指点器,在您通过<代码>a>查询时,即:a ;a> 查询,而不是在座标。 此外,你们还需要分配一些记忆,以复制大街的雕像。

Another error is that via memcpy you copy only 15 bytes, this means that your string is not zero terminated ( ) this results in printf() trying to print s until it reaches 0 which could never occur. So you must use strcpy, give the proper length argument or terminate the string to zero yourself.

#include<stdio.h>
#include<string.h>
int main()
{
  unsigned char *s;
  unsigned char a[30]="Hello world welcome";

  s = malloc(strlen(a) + 1); // + 1 for the 0 character
  if (s == NULL)
  {
      perror("malloc");
      exit(1);
  }

  // copy the whole string
  memcpy(s, a, (strlen(a) + 1)); // + 1 for the 0 character
  printf("%s",s);

  // copy the first 15 bytes and 0 terminate
  memcpy(s, a, 15);
  s[15] =   ;
  printf("%s",s);

  // copy via string copy
  strcpy(s, a);
  printf("%s",s);

  free(s)

  return 0;
}
问题回答

页: 1 从现在起,它只是一个未入选的点,即(很可能)点到:

unsigned char *s = malloc(16);

如同所有记忆分配一样,在你重新使用时,应取消:

free(s);

EDIT:另一个错误(我忽略了)是,你在打电话memcpy后,你必须终止NCL。

memcpy(s,a,15);
s[15] =   ;

或者,你可以使用<代码>strcpy(),将体格划分为15个特性,但你需要分配足够时间储存所有<代码>a/代码>(包括其NUL-决定因素):

unsigned char a[30]="Hello world welcome";
unsigned char *s = malloc(strlen(a) + 1);   //  Allocate
strcpy(s,a);        //  Copy entire string
s[15] =   ;       //  Truncate to 15 characters by inserting NULL.
printf("%s",s);
free(s);            //  Free s




相关问题
Fastest method for running a binary search on a file in C?

For example, let s say I want to find a particular word or number in a file. The contents are in sorted order (obviously). Since I want to run a binary search on the file, it seems like a real waste ...

Print possible strings created from a Number

Given a 10 digit Telephone Number, we have to print all possible strings created from that. The mapping of the numbers is the one as exactly on a phone s keypad. i.e. for 1,0-> No Letter for 2->...

Tips for debugging a made-for-linux application on windows?

I m trying to find the source of a bug I have found in an open-source application. I have managed to get a build up and running on my Windows machine, but I m having trouble finding the spot in the ...

Trying to split by two delimiters and it doesn t work - C

I wrote below code to readin line by line from stdin ex. city=Boston;city=New York;city=Chicago and then split each line by ; delimiter and print each record. Then in yet another loop I try to ...

Good, free, easy-to-use C graphics libraries? [closed]

I was wondering if there were any good free graphics libraries for C that are easy to use? It s for plotting 2d and 3d graphs and then saving to a file. It s on a Linux system and there s no gnuplot ...

Encoding, decoding an integer to a char array

Please note that this is not homework and i did search before starting this new thread. I got Store an int in a char array? I was looking for an answer but didn t get any satisfactory answer in the ...

热门标签