0
我有一個帶整數的文件。我想在緩衝區中寫入這些整數作爲字符(它的ASCII碼)。因爲它是一個更大的項目的一部分,請不要張貼不同,但請幫助我。我特別需要的是將char存儲在char *類型的緩衝區中。讀取int並將其存儲在C中的char *緩衝區中C
這些是我的聲明。
FILE *in;
long io_len = 1000;
char * buffer;
in=fopen("input.txt","a+");
buffer = malloc(io_len * sizeof(*buffer));
if(buffer == NULL){
perror("malloc");
exit(EXIT_FAILURE);
}
我想出了2個解決方案。
如果我寫這一個:
read_ret = read(in, buffer, io_len);
從文件中,io_len字節,並將其存儲在緩衝區中讀取。但它讀取字符。因此,舉例來說,如果我寫的123將會寫入緩衝區1,2,3不與ASCII數字字符123
所以我這樣做:因爲我想它讀取整數
while((fscanf(in,"%d", &i))==1){
printf(": %d\n", i);
}
。現在我對如何將它們作爲字符存儲在緩衝區中感到困惑。我已經嘗試過,但它給我一個分段錯誤。
while((fscanf(in,"%d", &i))==1){
printf(": %d\n", i);
buffer=(char) i;
printf("Character in Buffer:%s\n",buffer);
buffer++;
}
有想法,後來在我的文件,我寫我的緩衝別的地方,所以不管我會做我想做的指針是在我的字符數組的開始(如果這是有道理的,我說的話)
爲什麼你需要的空間,1.8兆存儲的整數? –
我不會只讀取一個整數。不要看現在的大小,它是一個通用的權利。我的項目只有在我輸入ascii數字作爲輸入時纔有效,並且我想改變它以便給出它的整數等值。而不是寫0,寫下48等等。 – ghostrider
對不起,但你對自己所追求的事情的澄清對我來說根本不清楚。您可能也需要查看您的文件打開模式; ''a +「'不是我期望讀取文件的。當然,你也應該檢查'fopen()'是否成功。但是文件中將會發生什麼?也許你以後是'fread()';除非使用'fileno(in)'作爲文件描述符參數,否則它肯定不是'read()'。根據文件中的內容,'fscanf()'可能會或可能不會有用。 –