外國人做外貿(mào)都會瀏覽哪些網(wǎng)站焊工培訓內(nèi)容有哪些
描述
分兩次從控制臺接收用戶的兩個輸入:第一個內(nèi)容為“人名”,第一個內(nèi)容為“心里
話”。
然后將這兩個輸入內(nèi)容組成如下句型并輸出出來:
1.(人名),I want to say,(心里話
2.
輸入輸出示例:
輸入:Kim
You are beautiful!
輸出:
Kim,I want to say,You are beautiful!
(答案在文末,有兩種答案)
錯誤演示:
#include <stdio.h>int main() {char name[100];char thoughts[100];// 從控制臺接收第一個輸入printf("請輸入人名:");scanf("%s", name);// 從控制臺接收第二個輸入printf("請輸入心里話:");scanf("%s", thoughts);// 組成句子并輸出printf("%s, I want to say, %s\n", name, thoughts);return 0;
}
?
程序輸出的是 "Kim, I want to say, You",而沒有輸出完整的句子 "Kim, I want to say, You are beautiful!",可能是因為輸入的心里話太長,超出了 scanf 函數(shù)讀取字符串的默認長度。此時可以使用指定最大長度的方式來接收輸入。
修改 C 語言代碼如下:
#include <stdio.h>int main() {char name[20];char thoughts[50];// 從控制臺接收第一個輸入printf("請輸入人名:");scanf("%s", name);// 從控制臺接收第二個輸入printf("請輸入心里話:");scanf("%49[^\n]", thoughts); // 指定最大長度為49,并忽略換行符// 組成句子并輸出printf("%s, I want to say, %s\n", name, thoughts);return 0;
}
?
如果在輸入心里話時出現(xiàn) "Kim, I want to say, € @報錯" 這樣的輸出,那么很可能是在輸入時發(fā)生了中文編碼問題。可以嘗試以下方法解決:
編輯器設(shè)置:打開代碼文件,查看編輯器的文字編碼設(shè)置,將其設(shè)置為 UTF-8 編碼(或者 GBK 編碼,具體需要根據(jù)本地環(huán)境和輸入內(nèi)容來選擇),再保存代碼文件。
輸出調(diào)試:在 C 語言程序中加入一些輸出語句,以便查看程序的執(zhí)行情況,比如:
? ?printf("輸入的心里話是:%s\n", thoughts); ? // 輸出調(diào)試信息
?這里的將其設(shè)置為 UTF-8 編碼(或者 GBK 編碼,具體需要根據(jù)本地環(huán)境和輸入內(nèi)容來選擇),再保存代碼文件,可以自行琢磨,不繼續(xù)了,下面換方法思路了
方法一:使用 fgets 函數(shù)來接收用戶輸入
所以最終改出來的代碼為:
#include <stdio.h>
#include <string.h>int main() {char name[20];char thoughts[50];// 從控制臺接收第一個輸入printf("請輸入人名:");fgets(name, sizeof(name), stdin);name[strcspn(name, "\n")] = '\0'; // 去除換行符// 從控制臺接收第二個輸入printf("請輸入心里話:");fgets(thoughts, sizeof(thoughts), stdin);thoughts[strcspn(thoughts, "\n")] = '\0'; // 去除換行符// 組成句子并輸出printf("%s, I want to say, %s\n", name, thoughts);return 0;
}
?
方法二:使用 gets 函數(shù)
#include <stdio.h>
#include <string.h>int main() {char str1[20], str2[20];printf("請輸入人名:");gets(str1);printf("請輸入心里話:");gets(str2);printf("%s, I want to say, %s\n", str1, str2);return 0;
}
?
使用 gets 函數(shù)來讀取輸入。gets 函數(shù)在讀取一行輸入時不會將換行符作為輸入的一部分,因此不需要去除換行符。接下來,使用 printf 函數(shù)輸出組合好的字符串。
雖然 gets 函數(shù)比 fgets 函數(shù)用起來更方便,但由于 gets 函數(shù)不能限制輸入的長度,容易發(fā)生緩沖區(qū)溢出,造成系統(tǒng)安全漏洞,所以在實際開發(fā)中建議使用 fgets 函數(shù),并在讀取用戶輸入前檢查輸入字符的長度。