C语言,求数据输出中,为什么会后面多出字符!!!

如题所述

b上没有加结束符
导致输出越界。

在printf("######");
前面 加一句 b[cont]= '\0';
这样就可以了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2016-12-28
请将源代码复制上来 帮你调试

C语言,求数据输出中,为什么会后面多出字符!!!
b上没有加结束符 导致输出越界。在printf("###");前面 加一句 b[cont]= '\\0';这样就可以了。

c语言数据输出中为什么会后面多出字符串
C语言字符串类型为char *或char []两者本质上是一样的 例如:char *x="abc";x指向'a'x+1指向'b'x+2指向'c'x+3指向'\\0'C语言在输出x时 从x指向的内容开始输出,一直到'\\0'为止 用char *定义x,会自动在末尾加上'\\0'但用char []定义x,可能末尾没有'\\0'如:char x[3]={'a',...

C语言编程哪里不对,为什么输出会有后面的字符?
这段C语言代码问题在于for.循环中退出条件不对,把for里面i<99换成a[i]即可。

c语言输出结果为什么会多出6个空格?
c 是占位符,输出的时候三个%c分别会填入后面列出的变量c1,c2,c3代表的值。即 a,b,c \\t 是制表符。它的作用是将光标移到最接近8的倍数的位置,使得后面的输入从此开始。因为前面 a%c b%c 会输出aa bb占了5个字符(注意aa和bb之间有个空格)所以遇到\/t的时候会跳到第8个字...

C语言,为什么输出字符的时候会多几个字符?
多出来的是换行符.你可以改成 while(scanf("%c",&str) && str!='\\n')这样遇到换行符结束程序.否则 读到换行符并输出是正常的.或者可以限制输出只有大写的时候 if(str>='A' && str<='Z') printf(...)

C语言 字符串输出时最后出现乱码
输出出现乱码就是因为字符串结尾并没有结尾符'\\0'。gets函数读入一行字符串时,会在最末尾自动加上'\\0'结尾。但是你在for循环内将s2的字符一个个拷贝到s中的时候,循环限定条件只到了s2字符串的'\\0'结尾符之前,所以输出乱码了。将循环条件k<a+b改为k<a+b+1或者k<=a+b就可以将s2字符串最...

C语言文件输出时,输入数据后为什么会出现乱码
struct studentType),1,fp)!=1) 简单看了下,这行有问题,往文件里写的时候是把一个字符串写进去,stud[i]是一个struct,强行把它序列化的话,内存中的存储不是连续的,这样写就会写入一些没用的数据,导致出错。考虑一下怎么把struct序列化,再看看struct的中的字节是怎么对齐的,建议而已 ...

如下:为什么C语言读取文件中的数据并输出时有乱码出现?本来输入的是...
估计是你文本的存储格式问题。重新另存为一份UTF-8格式的文件。UTF-8编码格式中的数字占用一个字节。而ANSI或其他字符是占用两个字节的。

c语言中单独输出打印感叹号表示什么?
在C语言中,单独输出打印感叹号("!")是一种语法错误。感叹号是一个运算符,具有逻辑非和按位求补的功能。如果它被单独使用,编译器会认为它是一个未定义的标识符,因此会出现语法错误的提示。您需要将感叹号与其他内容一起使用才能正确地编写C代码。

c语言。。。输出问题为什么多了两个符号?怎么消去。。
include <stdio.h>#include<string.h>int main(void){char t[100],a[100];int i=0,b=0,c=0;printf(" ");gets(t);for(i=0;t[i]!='\\0';i++){if(t[i]>='0'&&t[i]<='9'){b=b*10+t[i]-'0';}if((t[i]>='a'&&t[i]<='z') ||(t[i]>='A'&&t[i]...

相似回答