本文目錄一覽:
- 1、C語言,讀取字符串的字符時出錯問題
- 2、c語言字符串連接出錯,str1=str2&str3;
- 3、C語言提示讀取字符串時出錯,但程序能運行出正確結果
- 4、c語言中運行報錯 error C2018: unknown character ‘0xa1’,可是整個語句根本沒有’0xa1’···為啥啊
- 5、c語言為什麼用字符串連接符號總是會報錯
C語言,讀取字符串的字符時出錯問題
利用fgets()取得一個字符串,直到讀取到”回車”符,而你得到的字符串中含有「回車」(ascii:10),比你要比較的字符串多一個「回車」,所以strcmp()比較結果一直不為零。
如第一次while循環的結果:
c語言字符串連接出錯,str1=str2&str3;
不能寫成str1=strcat(str2,str3);
使用了strcat(str2,str3);
語句之後,str2就變成了原來的str2+str3
因此,如果非要寫成str1的話,要再加上一句:
strcpy(str1,str2);
補充;如果按照三樓那樣定義的話,可以。
二樓正解。
但是如果定義成char
str1[20];
就不行了
strcat
原型:extern
char
*strcat(char
*dest,char
*src);
用法:#include
string.h
功能:把src所指字符串添加到dest結尾處(覆蓋dest結尾處的’\0′)並添加’\0’。
說明:src和dest所指內存區域不可以重疊且dest必須有足夠的空間來容納src的字符串。
返回指向dest的指針。
舉例:
//
strcat.c
#include
syslib.h
#include
string.h
main()
{
char
d[20]=”Golden
Global”;
char
*s=”
View”;
clrscr();
strcat(d,s);
printf(“%s”,d);
getchar();
return
0;
}
C語言提示讀取字符串時出錯,但程序能運行出正確結果
scanf_s裏面多了一個參數N,刪除他,有兩個地方
scanf_s(“%d%s%f%f%f”, p1-num, p1-name, p1-score, p1-score + 1, p1-score + 2);
c語言中運行報錯 error C2018: unknown character ‘0xa1’,可是整個語句根本沒有’0xa1’···為啥啊
錯誤原因:’0xa1′ 是一個字符,ASCII碼是161(16進制0xa1),這是因為錯誤行含有全角字符,全角的空格的編碼是’0xa1’。
解決方法:仔細檢查錯誤行看是否含有全角空格\分號等待,或者注釋掉,再重新寫一遍
注意:每行的前面都有個看不見的全角空格。
擴展資料:
C語言常見錯誤:
1.書寫標識符時,忽略大小寫:
編譯程序會出錯,C語言區分大小寫,習慣上,符號常量名用大寫,變量名用小寫表示,以增加可讀性。
2.忽略變量類型,進行不合法運算:
%是求余運算,得到a/b的整餘數。整型變量可進行求余運算,而實型變量則不允許進行求余運算。
3.字符常量與字符串常量混淆:
字符常量是一對單引號括起來的常量,字符串常量是一對雙引號括起來的常量。C語言規定以「\0」作為字符串結束標誌,它是系統自動加上的,所以字符常量「b」其實包含兩個字符’b’ ‘\0’,而把它賦給一個字符變量是不行的。
4.忘加地址運算符「」:scanf函數的作用是:
按照a在內存中的地址將a的值存進去。「a」是指a在內存中的地址。
5.忽略了「=」和「==」的區別:
C語言中,「=」是賦值運算符,「==」是關係運算符。在此代碼中,前者是進行比較,後者是進行賦值。
c語言為什麼用字符串連接符號總是會報錯
C語言沒有字符串連接符號。 只能用strcat連接。
常見的str1+str2的方式是不可以用在C語言的。
strcat用法
strcat (str1, str2);
將字符串str2連接到str1上。
頭文件為string.h
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/280612.html