一个关于puts的函数的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/11 05:02:17
我写了一个测试函数
#include<stdio.h>
main( )

{

char a[100];

printf("Enter a string : "); gets(a);

printf("The original string is : "); puts(a);

}
结果:
输入:this is a test
输出:this is a test

#include<stdio.h>
main( )

{

char a[100];

int i;

for (i=0;i<10;i++)

a[i]='a';

printf("The original string is : "); puts(a);

}
运行结果是:
输入:aaaaaaaaaa烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫烫等等乱码
我想知道puts是个怎样的用法,这两种方法区别在哪里?
还有关于这个烫我我见到好多,分析c语言编的exe文件时候,这个字很多?

字符串的末尾是有一个'\0'存在的,虽然不显示出来,像printf这样的函数,他们在打印字符串的时候会检测是否存在当前字符是否为'\0',为'\0'则退出打印。所以你在#include<stdio.h>
main( )

{

char a[100];

int i;

for (i=0;i<10;i++)

a[i]='a';//这一句的末尾没有添加结束符,即'\0'
a[i+1]='\0';//这一句是我替你加的,你可以回去试试

printf("The original string is : "); puts(a);
}
还有你在使用gets函数接受字符串输入的时候,它在保存的时候其实自动的给你的字符串末尾添加了'\0';
你可以使用打印数字的方法来查看
譬如拿你的第一句
#include<stdio.h>
#include<string.h>
int main( )

{

char a[100];

printf("Enter a string : "); gets(a);

for(int i=0;i<=strlen(a);i++)/*strlen是计算字符串长度的函数,不包括'\0'*/
printf("%d\t",a[i]);/*逐字显示你输入各个字符的AscII码,最后一个是'\0','\0'的ascii码是0*/
printf("\n");

return 0;
}

因为程序太复杂了,CPU烧的很热,所以他就说 烫烫烫烫烫