Ⅰ c语言运行结果后面怎么多了一个问号如何去掉菜鸟求助……
你的最后一行 printf("%c\n",X);应该是只有0~100时才可以输出对应的字符X。但是你把它放在if语句的后面,那么不论你输入什么数值,都要输出X,但是当输入数值小于0或者大于100时,X是没有被赋值的。你应该把这条语句放在前面的4个对X赋值的语句之后。
Ⅱ C语言这个代码运行结果为什么是问号
倘若楼主是想实现大小写转换的的话,你小写字母应该是a-32,因为小写字母的ASCII码值大。而?也有ASCII码值,是63,你可以去刻意控制输入的值,先心中猜想,在对照看看
Ⅲ C语言中,printf("%s.%s", s1,s2); 这样写,为什么输出在屏幕上·变成了问号
可能字符串中有这个符号,或者是没有在结尾加"\0"
Ⅳ C语言打印莫名问号
原因是你的下标出了问题(以下都以输入kan为例)
我首先做的是在reverse前面用strlen把line的长度打印出来,结果当输入kan的时候,打印出来的长度是5,你期望的应该是4吧,前3个是kan,最后一个换行。你希望getline返回4,于是在reverse中减去2,正好指向kan的最后一个字符。这是对的,问题在getline中。
getline中:for跳出是因为循环条件不满足,但是在判断条件之前,for循环的++i还是会做的。所以当for循环跳出后,i指向的已经是数组的下一个位置了,这个位置的字符是没有字符的,而你后来又对i加了一次,加完以后再用换行符赋值,于是在\n和kan的n之间就多了一个你不知道是什么东西的字符。而你在赋值\0的时候没有用i++,而只是i+1,这使得i的值如你预期的返回了4,从而使那个多于的字符没有参与到reverse过程中,所以当你打印reverse后的字符串时,那么多个的字符就紧跟着kan被打印出来了(其实因为getline的问题,就算不做reverse打印line也是会跟着一个莫名其妙的字符的)
把getline中for以后的部分改成如下:
if(c
==
'\n')
{
//i++;
line[i]
=
'\n';
++i;
}
line[i]
=
'\0';
return
i;
另外,一次操作后对数组置\0也是不必的,因为在getline中把结尾标记好就够了~
Ⅳ 新手。。C/C++输出出现一串问号
近期研究设计模式,在程序输出时心血来潮用了c版本的printf,结果就蛋疼了,一直输出是乱码,
strings="中国";
printf("%s",s);//输出乱码
果断切换成c++版本的cout发现可以正常输出。于是上网找答案,居然惊讶的发现printf输出字符串是针对char*的,换言之,printf只能输出c语言中的内置数据,string不是c语言内置数据。
更深入的来说:s这个string类型的对象并非单单只有字符串,其内还有许多用于操作的函数,于是&s并非字符串“中国”的首地址,而是s这个对象的首地址。
所以要做如下操作:
strings="中国";
printf("%s",s.c_str());//string中c_str()成员方法返回当前字符串的首字符地址
或cout<<s;//string中重载了“<<”操作符
Ⅵ C语言 输出 问号
空格的原因是printf("the reverse line is:\n %s", rev);这句里面有一个空格(你的格式是换行后空格输出 所以有一个空格)
至于烫的原因 是
for (i = 0; i <= len; ++i)
rev[len - i] = ori[i - 1];
是当i=0的时候引用了ori[-1]是位置的内存,所以出现的
改为
for (i = 1; i <= len; ++i)
rev[len - i] = ori[i - 1];
就行了
ps:你用的是Windows编译器 谢谢采纳
Ⅶ C语言复制文件内容时候最后多了个问号
1. 我觉得你很奇怪,人家都是 int main(int argc, char* argv[]),你非要倒过来,这个也是书上写的?第一个参数是argc(argument count),第二个是value。
2、程序确实是错误的,fgetc返回的是int,char ch是错误的本源。
int ch;
while ( (ch=fgetc(ch))!=EOF ) {
putchar(ch);
};
对于fgetc,所有的char返回值对应int值0-255,当返回-1(EOF)表示文件结束或者出错。
如果你用char,255和-1是同一个值,无法判断文件结束,然后这个-1只能被写入文件,然后判断出feof,跳出循环,所以多了一个字节EOF(-1)。
Ⅷ c语言fp输出文件名最后自动带问号
没全部看完,也懒得看完了,仅看了一部分就已发现一个问题:
concat函数里,这一句: tmp=malloc(strlen(szFileName)+strlen(fileID));少分配了一个字节,串长和串实际占用的空间并不全等,以'\0'为结束符的中计算串长时不会数这个结束符,而分配空间时必需为它预留空间,否则写出界了,运行结果就难以预料了
Ⅸ c语言这个程序怎么输出结果是一个问号,这是个连接字符串程序 #include "stdafx.h"
还有个问题是:mystrcat最后return s;
但是这个s已经不是指定字符串的开始了。换句话说,你成功的连接了字符串,但是你返回的是这字符串之后的地址空间。
char *mystrcat(char *s,char *ct) //字符串连接
{
char * const ret = s;
while(*(s++));
s--;
while(*ct)
*(s++) = *(ct++);
return ret;
}
Ⅹ 请问c语言的问题,输出的总是号
错误有点多。。首先你这个程序根本运行不了吧。。
改正后:
#include <stdio.h>
#include<string.h>//头文件包含strcpy用法
struct Student
{
char name[10];//要用数组来存储字符串,char用于单个字符
int num;
}stu1,stu2;
int main()
{
strcpy(stu1.name,"hu");//作用是复制后面的内容到前面;
//字符串相当于地址,不能直接复制给结构体对象
strcpy(stu2.name,"li");
stu1.num=2014;
stu2.num=2015;
printf("%s\n%s\n", stu1.name, stu2.name);//输出字符串是%s,单个字符才是%c
printf("%d\n%d\n", stu1.num, stu2.num);
return 0;//前面定义了int类型的主函数,最好添加一个返回值,否则用void main()
}