一个简单的C程序自己出错的问题

1.sprintf和scanf函数

​ 今天写一个C程序,不知道为啥在使用sprintf和scanf函数中一直出错。后面查找相关资料,终于有点头绪。如下代码:

char * str;
scanf("%s",str);

这个代码为啥会出错?因为没有为它分配内存,所以会出错,其实sprintf函数也是类似的。所以我们可以有俩种解决办法,一是通过malloc函数动态分配内存,二是我们可以通过字符数组声明字符串。代码如下:

char * str = (char *)malloc(100);//1
char strs[100] ;//2

2.介绍以下sprintf函数

我们可以用这个函数实现拼接字符串以及int类型的数字转为字符串

char str1[100];
sprintf(str1,"name=%s\tid=%d\tscore=%d\n",stu[i].name,stu[i].stuId,stu[i].score);

3.简单的排序

for(i=0;i<=9;i++){
        	for (j=i+1;j<=10;j++){
			if(stu[i].score>stu[j].score)    
            		{
                		temp=stu[i];
                		stu[i]=stu[j];
                		stu[j]=temp;
            		}
		}		
	}

这个排序并不难,但是就是因为这块代码我没有把边界条件写好,所以运行程序的时候一直提示Segmentation fault

上一篇:一个简单C程序自己出错的问题


下一篇:【Web漏洞】PHP sprintf格式化字符串漏洞