Ⅰ 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()
}