在用malloc创建的字符串中逐个字符写入?

在用malloc创建的字符串中逐个字符写入?,c,pointers,malloc,pointer-arithmetic,C,Pointers,Malloc,Pointer Arithmetic,如果我已经分配了一些内存,为什么我不能在它的位置一个字符一个字符地写呢?下面的printf没有输出任何内容。我错过了什么 int main() { char *newStr = NULL; newStr = (char *) malloc ((2) * sizeof(char)); *newStr = 'a'; newStr++; *newStr = '\0'; printf("%s", newStr

如果我已经分配了一些内存,为什么我不能在它的位置一个字符一个字符地写呢?下面的printf没有输出任何内容。我错过了什么

int main()
{
        char *newStr = NULL;
        newStr = (char *) malloc ((2) * sizeof(char));
        *newStr = 'a';
        newStr++;
        *newStr = '\0';
        printf("%s", newStr);
}

这是因为您正在移动指针,所以
printf(“%s”,newStr)尝试只打印
\0

试试这个:

char*newStr=NULL;
newStr=malloc(2*sizeof(char));
*newStr='a';
newStr++;
*newStr='\0';
新闻记者--;
printf(“%s”,newStr);

或者这个:

char*newStr=NULL;
char*backupedPointer=NULL;
newStr=malloc(2*sizeof(char));
backupedPointer=newStr;
*newStr='a';
newStr++;
*newStr='\0';
printf(“%s”,backupedPointer);

正如Matt McNabb在他的评论中所说,您应该在末尾添加
free()
,以释放您分配的内存(一个
malloc()
=一个
free()
,始终):

char*newStr=NULL;
char*backupedPointer=NULL;
newStr=malloc(2*sizeof(char));
backupedPointer=newStr;
*newStr='a';
newStr++;
*newStr='\0';
printf(“%s”,backupedPointer);
自由(备份指针);

最佳解决方案之一是:

char*newStr=NULL;
newStr=malloc(2*sizeof(char));
newStr[0]=“a”;
newStr[1]='\0';
printf(“%s”,newStr);
免费(newStr);

这是因为您正在移动指针,所以
printf(“%s”,newStr)尝试只打印
\0

试试这个:

char*newStr=NULL;
newStr=malloc(2*sizeof(char));
*newStr='a';
newStr++;
*newStr='\0';
新闻记者--;
printf(“%s”,newStr);

或者这个:

char*newStr=NULL;
char*backupedPointer=NULL;
newStr=malloc(2*sizeof(char));
backupedPointer=newStr;
*newStr='a';
newStr++;
*newStr='\0';
printf(“%s”,backupedPointer);

正如Matt McNabb在他的评论中所说,您应该在末尾添加
free()
,以释放您分配的内存(一个
malloc()
=一个
free()
,始终):

char*newStr=NULL;
char*backupedPointer=NULL;
newStr=malloc(2*sizeof(char));
backupedPointer=newStr;
*newStr='a';
newStr++;
*newStr='\0';
printf(“%s”,backupedPointer);
自由(备份指针);

最佳解决方案之一是:

char*newStr=NULL;
newStr=malloc(2*sizeof(char));
newStr[0]=“a”;
newStr[1]='\0';
printf(“%s”,newStr);
免费(newStr);

这是因为您正在移动指针,所以
printf(“%s”,newStr)尝试只打印
\0

试试这个:

char*newStr=NULL;
newStr=malloc(2*sizeof(char));
*newStr='a';
newStr++;
*newStr='\0';
新闻记者--;
printf(“%s”,newStr);

或者这个:

char*newStr=NULL;
char*backupedPointer=NULL;
newStr=malloc(2*sizeof(char));
backupedPointer=newStr;
*newStr='a';
newStr++;
*newStr='\0';
printf(“%s”,backupedPointer);

正如Matt McNabb在他的评论中所说,您应该在末尾添加
free()
,以释放您分配的内存(一个
malloc()
=一个
free()
,始终):

char*newStr=NULL;
char*backupedPointer=NULL;
newStr=malloc(2*sizeof(char));
backupedPointer=newStr;
*newStr='a';
newStr++;
*newStr='\0';
printf(“%s”,backupedPointer);
自由(备份指针);

最佳解决方案之一是:

char*newStr=NULL;
newStr=malloc(2*sizeof(char));
newStr[0]=“a”;
newStr[1]='\0';
printf(“%s”,newStr);
免费(newStr);

这是因为您正在移动指针,所以
printf(“%s”,newStr)尝试只打印
\0

试试这个:

char*newStr=NULL;
newStr=malloc(2*sizeof(char));
*newStr='a';
newStr++;
*newStr='\0';
新闻记者--;
printf(“%s”,newStr);

或者这个:

char*newStr=NULL;
char*backupedPointer=NULL;
newStr=malloc(2*sizeof(char));
backupedPointer=newStr;
*newStr='a';
newStr++;
*newStr='\0';
printf(“%s”,backupedPointer);

正如Matt McNabb在他的评论中所说,您应该在末尾添加
free()
,以释放您分配的内存(一个
malloc()
=一个
free()
,始终):

char*newStr=NULL;
char*backupedPointer=NULL;
newStr=malloc(2*sizeof(char));
backupedPointer=newStr;
*newStr='a';
newStr++;
*newStr='\0';
printf(“%s”,backupedPointer);
自由(备份指针);

最佳解决方案之一是:

char*newStr=NULL;
newStr=malloc(2*sizeof(char));
newStr[0]=“a”;
newStr[1]='\0';
printf(“%s”,newStr);
免费(newStr);

malloc的更简单形式:
newStr=malloc(2)。此外,您还需要
#include
。malloc的更简单形式:
newStr=malloc(2)。此外,您还需要
#include
。malloc的更简单形式:
newStr=malloc(2)。此外,您还需要
#include
。malloc的更简单形式:
newStr=malloc(2)。此外,您还需要
#include
。除此之外,您还应该
释放
malloc
中的任何内容,因此最好不要更改指向
malloc
d空间的指针。制作另一个指针或使用整数索引。除此之外,您应该
释放
任何您
malloc
,因此最好不要更改指向
malloc
d空间的指针。再做一个指针o