我有此函數將字符串更改爲所有小寫字母。使用指針對函數(tolower)進行單元測試
我想爲這個函數創建一個單元測試,但我認爲我傳遞了錯誤的參數,並且出現此錯誤。
Segmentation Fault (core dumped)
這是我的代碼。
void example (char const * str1, int length, char * str2) {
int i;
for(i = 0; i < length; i++) {
*(str2 + i) = putchar(tolower(*(str1 + i)));
}
}
void testexample() {
char * str1 = "TEST";
char * str2 = "";
example(str1, 4, str2);
printf("%s\n", *str2);
}
int main() {
testexample();
return 0;
}
STR1是原始字符串,和n是串的長度,並且是STR2 STR1的所有小寫版本。
我一直在試圖解決這個問題一段時間了。
我很感激任何幫助。謝謝。
這是如何編譯的? – EOF
'str2'指向一個字符串文字,它可能是隻讀的,並且它還不夠長,無法複製'str1'。 – Dmitri
C11標準草案n1570:* 6.5.16賦值運算符約束條件賦值運算符應該有一個可修改的左值作爲它的左操作數*,* 6.3.2.1左值,數組和函數指示符[...]可修改的左值是一個左值 沒有數組類型,沒有不完整的類型,沒有const- 限定類型,[*] *。您的編譯器有義務發佈診斷消息。 – EOF