C语言 指针 错误是怎么回事?
#includestdio.h
#includestring.h
int main()
{
void swap(char *,char *);
char str1[20],str2[31],str3[20]; /* str1写错 */
printf(“input three line:\n”);
gets(str1);
gets(str2);
gets(str3);
if(strcmp(str1,str2)0)
swap(str1,str2);
if(strcmp(str2,str3)0)
swap(str2,str3);
if(strcmp(str1,str3)0)
swap(str1,str3);
printf(“the order is:\n%s\n%s\n%s\n”, str1,str2,str3); /* 字符串之间加一个空格或者换行符 */
return 0;
}
void swap(char *p1,char *p2)
{
char p[31]; /* 你最长的字符串是31字节 */
strcpy(p,p1);
strcpy(p1,p2);
strcpy(p2,p);
}
结果:
input three line:
abc
ABC
123
the order is:
ABC
123
abc
Press any key to continue
C语言 运行后出现乱码的结果,调试中发现提示错误的指针
if(result==NULL)
{
printf(“error:malloc faineled in concat\n”);
exit(EXIT_FAILURE);
}
strcpy(result,s1);
strcat(result,s2);
少头文件#includestdlib.h,中间这么改
c语言指针错误?
#includestdio.h
#includestring.h
void insert(char *dtr, char *str, char locat);
void main()
{
char a[100]=”hello,mop~”;
char b[]=”I am your small pig”;
char *str;
insert(a,b,10);
printf(“%s\n”,a);
}
void insert(char *dtr, char *str, char locat) //dtr–被插的字符串,str–插入的字符串, locat—插入为置
{
dtr+=locat;
locat=0;
while(*dtr)
{
while(*str)
{
*dtr^=*str;
*str^=*dtr;
*dtr^=*str;
str++;
dtr++;
locat++;
}
str-=locat;
locat=0;
}
while(*str)
{
*dtr^=*str;
*str^=*dtr;
*dtr^=*str;
str++;
dtr++;
}
//return str;
}
c++ 错误的指针 char *
char*变量使用前没有进行初始化并分配存储空间。例如:
#include “stdafx.h”
#include “process.h”
#include “malloc.h”
int main(int argc,char* argv[])
{
char* cMychar;
//sprintf(cMychar,”%s”, “abc”); //出错 未初始化
int maxlen = 1024;//申请空间大小不足可能也不会报错,但程序会不稳定,不同运行环境下可能报错
cMychar = new char[maxlen+1]; //分配maxlen+1个字节空间 最后一字储存’\0′
//cMychar = (char*)malloc(maxlen+1); //这样也可以 分配maxlen个字节空间
sprintf(cMychar, “%s\n”, “hello”); //已经初始化 可以使用
printf(cMychar);
system(“pause”);
return 0;
}