在用malloc创建的字符串中逐个字符写入?
如果我已经分配了一些内存,为什么我不能在它的位置一个字符一个字符地写呢?下面的printf没有输出任何内容。我错过了什么在用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
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