[英]C - my program prints weird stuff after reading from a file
我正在嘗試編寫一個分配ID3標簽的程序。 到目前為止,我沒有多少代碼,因為我正在嘗試學習如何使用ID3標簽本身。 我編寫了一個小程序,將讀取前三個字母並將其打印回去,以了解打開文件和關閉文件的過程如何工作,等等。
這是我的代碼:
#include <stdio.h>
int main(int argc, char *argv[]) {
char buf[4];
if (argc == 2) {
FILE *mp3 = fopen(argv[1], "r");
fread(buf, 3, 1, mp3);
buf[3] = "\0";
printf("%s\n", buf);
fclose(mp3);
char a = buf[0];
char b = buf[1];
char c = buf[2];
printf("%x\t%x\t%x\n", a, b, c);
}
return 0;
}
它設法打印出預期的內容(ID3),但隨后使一些奇怪的字母出現在ID3部分之后。 我還添加了一個部分來打印這些內容的十六進制值。
我是C語言的新手,我很難理解這一點。 另外,我不太了解制作和管理字符串的所有不同方式之間的區別。 因此,我非常感謝您對此提供的任何幫助以及如何使其變得更好並向我解釋原因等。
您為buf [3]分配“ \\ 0”的部分是錯誤的。 您應該使用單引號:
buf[3] = '\0';
原因是雙引號表示字符串文字(以null終止的char數組),而不是char變量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.