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

我写了一个测试函数
#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;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2008-03-03
因为程序太复杂了,CPU烧的很热,所以他就说 烫烫烫烫烫烫烫烫烫烫烫烫
不信下次你把程序写简单点,他就不烫了~~~
第2个回答  2008-03-03
加这句memset(a,'\0',sizeof(a));就没有了,a你没有初始化对象,作为字符串格式打印时,当遇到'\0'才结束打印,所以后面90个字符全打成"烫烫..."了

main( )
{
char a[100];
int i;
memset(a,'\0',sizeof(a));
for (i=0;i<10;i++)
a[i]='a';
printf("The original string is : "); puts(a);

}
第3个回答  2008-03-05
学习

一个关于puts的函数的问题?
因为程序太复杂了,CPU烧的很热,所以他就说 烫烫烫烫烫烫烫烫烫烫烫烫 不信下次你把程序写简单点,他就不烫了~~~

一个关于puts的函数的问题2?
s[i]=(char)(s[i]+1);} }

C中puts函数的一个问题
puts函数遇到\\0会认为字符串结束,所以输出结果为xy。

问一个puts函数的问题
puts的参数是字符串,你的字符数组要是以'\\0'结尾是没有问题的。

关于c语言中puts函数的问题
\\0和NULL是等价的。这个倒置数组的语句好像有问题,只是把后面的数放到前面,把前面的一半数覆盖了。没有实现交换倒置的目的。应改成:for(count=0;count<=(i\/2);count++){ temp=*(number+count);(number+count)=*(number+(i-count));(number+(i-count))=temp;} ...

C语言 puts(puts("TOM")) 为什么是错的? 这是书上的一道题, 我想问...
puts函数原型为int puts(const char *string);,返回值是一个整数,用于判断函数执行状态,返回非负数代表执行成功,返回EOF代表执行失败。

c语言用puts函数输出字符串问题
n,i;scanf("%s",&string);n=strlen(string);for(i=n-1;i>=0;i--)putchar(string[i]);\/\/(有错误)} 1,puts是输出字符串,输出完,自动回车,此函数中puts后要跟数组名,不是数组元素,2反向输出可用putchar进行一个一个元素反向输出。3while未设置终止条件,哪怕能执行,也是无限循环 ...

puts()的功能是什么?
(1)“puts()”函数只能输出字符串, 不能输出数值或进行格式变换。(2)可以将字符串直接写入“puts()”函数中。如:puts("Hello, world!");。(3)“puts”和printf的用法一样,“puts()”函数的作用与语句“printf("%s\\n",s);”的作用相同。注意:“puts”在输出字符串后会自动输出一个...

关于C语言中的puts函数
因为puts内部有缓冲区,当他存储一个换行符或者到达buffsize-1的时候才停止读取,并且将一个NUL字节添加到缓冲区所存储的字符串的尾端。

一个关于puts();和gets()的函数的问题
你的C只有3个字节,你使用了abcdefghi10个字节,不出错真是奇迹。函数原型:char*gets(char*buffer);使用的buffer是个内存地址,二维数组也是内存地址,所以他们也可用在二维中。但是这样用很容易计算错误,如果数学非常好,可以使用。书上的意思是输入2个是安全的,2个以上是不安全的。

相似回答
大家正在搜