c語言指針移動
1. c語言中文件指針怎樣向前移動一個位元組
你是用C標准I/O庫函數的話,
(1)文件定位:
文件定位指讀取或設置文件當前讀寫點,所有的通過文件指針讀寫數據的函數,都是從文件的當前讀寫點讀寫數據的。
常用的函數有:
#include
<stdio.h>
int
fseek(FILE
*stream,
long
offset,
int
whence);
fseek
設置當前讀寫點到
offset
處,
whence
可以是
SEEK_SET,SEEK_CUR,SEEK_END,這些值決定是
從文件頭、當前點和文件尾計算偏移量
offset.
你可以定義一個文件指針FILE
*fp,當你打開一個文件時,文件指針指向開頭,
你要指到多少個位元組,只要控制偏移量就好,例如
相對當前位置往後移動一個位元組:fseek(fp,1,SEEK_CUR);中間的值就是偏移量。
如果你要往前移動一個位元組,直接改為負值就可以:fseek(fp,-1,SEEK_CUR)
2. c語言,關於指針內數據的移動
你不能這么做。buf+11的確是buf[11]的地址,這沒錯,但因為buf是數組buf[1024]的起始地址,這是一個常量,buf不能更改,你不能給它賦值,即:你不能直接buf = buf+11;
有更好的辦法就是內存復制。你可以使用memmove函數,它包含在<string.h>頭文件中,其定義原型如下:
void*memmove(void*dest,constvoid*src,size_tcount);
它的作用是由src所指內存區域復制count個位元組到dest所指內存區域。具體到你的需求,這個函數應該這樣調用:
memmove(buf,buf+11,1024-11);
其中,1024 - 11指的是從第11個元素開始到第1024個元素結束,這之間一共有1024 - 11個元素,由於是char型的,每個元素佔1個位元組,所以就是1024 - 11個位元組。
這樣調用的目的就是把 buf[11]開始之後的數據往前移到buf[0]開始的位置,這要比用for循環一個位元組一個位元組地移動要高效得多。
3. c語言中關於指針移動問題
指針類型所佔內存空間在32位系統下為4個位元組。是指:指針本身占的長度。
移動指針的時候。。。。。。。。。。。。。指的是:指針所指的類型所佔的長度啊。
你可以用sizeof()看一下 所佔內存大小。
比如 char *p; int *s;
那麼:
sizeof(p)=4,sizeof(*p)=1
sizeof(s)=4,sizeof(*s)=4
注意,結果依據編譯器而定。TC一般是2位元組。。VC++是4位元組。
4. c語言中移動指針*p++。它移動了多少啊.一個位元組嗎
不一定,要看這個指針類型的基類型,即:
如果是char
*p,那麼p++就移動一個位元組
如果是int
*p,那麼p++就移動sizeof(int)個位元組。
總之一句話,對於指針p而言,p++移動的位元組數是sizeof(*p)
5. C語言文件指針自動移動
文件內部指針不是就是用打開文件函數所賦值的那個指針,
打開函數的指針,是文件流的指針,指向這個文件流。
內部指針指向當前操作在文件流中的位置
fp是文件指針的話
可以使用ftell(fp)來獲取當前內部指針位置。
也有fseek函數來設置內部指針位置,這些函數調用的時候,必須使用文件流的 指針。文件流的指針始終是這個fp,但內部指針的位置是一直在移動的,沒有一個可見的內部指針的變數來讓你操作,只對文件指針操作就可以了。
讀寫文件的時候內部指針自動移動,是C的IO系統管理來實現的,這個文件流其實仍然是IO,跟鍵盤滑鼠都是由IO系統管理來做的,不用去關心底層的具體操作,只要知道讀寫操作以後內部指針變了,就行。
6. c語言指針移動問題
backward++;
forward--;
用物理的角度看,限定其中一個為
參照物
,那麼另一個的速度就是2。
擦肩而過
你懂的
吧.....
每次加2可能跳過了你的那個相等的機會。
backward
<=
forward
比較可靠。
7. 怎樣才算是移動指針 C語言
指針的值變化的時候就叫移動指針比如:
int arr[4]={1,2,3,4};
int *p;
p=arr;
p++; //p指向下一個元素了,這個就叫移動指針
8. 在C語言編程下怎麼控制windows系統指針的移動
使用用SendInput函數可以控制指針的移動。第二個參數是一個INPUT結構體的數組,第一個參數代表這個數組有幾個元素,最後一個參數代表這個數組中每一個元素是幾個位元組。參考以下代碼。
#include <windows.h>
#pragma comment(lib, "user32.lib")
int main() {
INPUT mouseInput;
ZeroMemory(&mouseInput, sizeof mouseInput);
mouseInput.type = INPUT_MOUSE;
mouseInput.mi.dx = 10;
mouseInput.mi.dy = 10;
mouseInput.mi.dwFlags = MOUSEEVENTF_MOVE;
SendInput(1, &mouseInput, sizeof(mouseInput));
return 0;
}
9. c語言怎樣移動文件指針到制定位置啊
參數為下列其中一種:
SEEK_SET:從距文件開頭 offset 位移量為新的讀寫位置;
SEEK_CUR:以目前的讀寫位置往後增加 offset 個位移量;
SEEK_END:將讀寫位置指向文件尾後再增加 offset 個位移量。
10. C語言指針移動的問題,程序結果是53,怎麼得來的
x[1][1]表示的是二維數組第二行第二列的數據,記住數組的下標是從0開始的。
第二行第二列是5所以&x[1][1]代表其地址,for循環里i可以取0和2,那麼p[0]就是5,p[2]就是5的後兩個3。