数组末尾加结束符的问题

来源:百度知道 编辑:UC知道 时间:2024/06/03 02:34:43
############################第一个程序###########################
#include "stdafx.h"
#include<conio.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
#define M 200
int aa[1000];
void fun(int *n)
{
int i,num=0;*n=0;
for(i=7;i<=1000;i++)
if((i%7==0||i%11==0)&&(i%7!=0||i%11!=0))
{
aa[num]=i;
num++;
}
*n=num;
//aa[num]='\0';????????????加不加多可以
}
void main()
{
int n,k;
fun(&n);
for(k=0;k<n;k++)
if((k+1)%10==0)
printf("\n");
else
printf("%5d",aa[k]);
}
####################第二个问题
#include "stdafx.h"
#include<conio.h>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#define N 80
void fun(char *s,char t[])
{
int i,j=0;
fo

你第一个是int型的数组,第二个是char型数组,而且你的打印方式也不一样,第一个是按照数据打印,所以不会有问题,第二个是按字符打印,如果t[j]位置不是0,那么就会乱码、

\0是字符串结束符,其他类型的数组不用加,只有char *类型的需要加

那个结束符是指字符串的结束符,C语言的字符串规定必须由它来结束。
两个问题的不同就是这个匹配符%s,它只知道要输出一个字符串,没有遇到'\0'就一直输,就乱码了。

c字符串规定最后一个字符为'\0',并且占用一个字节
如:char * str = "hello"; 实际占用了6个字节。

1. 第一个程序中int型数组是不需要在数组末尾加的'\0'的

2. 第二个程序是C字符串,需要'\0'。