當前位置:首頁 » 編程語言 » c語言獲取指針內容
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言獲取指針內容

發布時間: 2022-10-18 21:07:34

A. c語言指針讀取問題

如果一行就一個像m.jpg,可以用下面程序處理;如果含多個,那你把格式顯示一下。最好是個例子
#include <stdio.h>
#include <stdlib.h>
#include <string.h>//增加頭文件
#define MAXLINE 100
int main()
{

FILE *fp;
char arr[MAXLINE+1];

if ((fp = fopen ("MYFILE", "r")) == NULL)
{
perror ("File open error!\n");
exit (1);
}
while ((fgets (arr, MAXLINE, fp)) != NULL)
{
if(strstr(arr,".jpg")!=NULL)
puts(arr);
//fputs (arr, stdout);//arr中存放的是字元串,例如「m.jpg」,"n.jpg","t.jpg","new.txt"等,我想讓後綴為.jpg的文件名字元串才輸出到stdout來,請問怎麼改?????
}
return 0;
}

B. c語言如何輸出指針所指向的值

需要准備的材料分別有:電腦、C語言編譯器。

1、首先,打開C語言編譯器,新建一個初始.cpp文件,例如:test.cpp。

C. C語言指針/引用/取值

指針是一個存儲計算機內存地址的變數。從指針指向的內存讀取數據稱作指針的取值。指針可以指向某些具體類型的變數地址,例如int、long和double。指針也可以是void類型、NULL指針和未初始化指針。

根據出現的位置不同,操作符  *  既可以用來聲明一個指針變數,也可以用作指針的取值。當用在聲明一個變數時,*表示這里聲明了一個指針。其它情況用到*表示指針的取值。

&是地址操作符,用來引用一個內存地址。通過在變數名字前使用&操作符,我們可以得到該變數的內存地址。

// 聲明一個int指針

int*ptr;

// 聲明一個int值

int  val = 1;

// 為指針分配一個int值的引用

ptr = &val;

// 對指針進行取值,列印存儲在指針地址中的內容

int deref = *ptr;

printf("%d\n", deref);

第2行,我們通過*操作符聲明了一個int指針。接著我們聲明了一個int變數並賦值為1。然後我們用int變數的地址初始化我們的int指針。接下來對int指針取值,用變數的內存地址初始化int指針。最終,我們列印輸出變數值,內容為1。

第6行的&val是一個引用。在val變數聲明並初始化內存之後,通過在變數名之前使用地址操作符&我們可以直接引用變數的內存地址。

第8行,我們再一次使用*操作符來對該指針取值,可直接獲得指針指向的內存地址中的數據。由於指針聲明的類型是int,所以取到的值是指針指向的內存地址存儲的int值。

說穿了,指針就是地址吧,這里可以把指針、引用和值的關系類比為信封、郵箱地址和房子。一個指針就好像是一個信封,我們可以在上面填寫郵寄地址。一個引用(地址)就像是一個郵件地址,它是實際的地址。取值就像是地址對應的房子。我們可以把信封上的地址擦掉,寫上另外一個我們想要的地址,但這個行為對房子沒有任何影響。

D. c語言 指針 取值

首先更正一下樓主錯誤,int 型的指針不可以用來獲取char型的地址的,這樣會產生錯誤,如果你的編譯系統沒有報錯,實際上也有錯誤。

第二,字元串實際上就是等於字元數組。
ptr = &str[2];
printf("%d",ptr);
reptr = *(ptr);
printf("%c",reptr);

printf("\n");
這個可以輸出的。就是C
ptr = &str[2];
printf("%c",*(ptr+1));
輸出的是第4個字元『/0』就是「空」,可能樓主由此判斷無法輸出
ptr = &str[1];
printf("%c",*(ptr+1));
就能輸出C了

int *應該不可以,不過 int的話就可以
char str[4] = "abc";
int ptr;
char reptr;

ptr =(int)&str[0];
printf("%d",(char *)ptr);
reptr = *((char *)ptr);
printf("%c",reptr);

printf("\n");

實際上利用強制類型轉換,用int來存數據,意義上char 和int都是整形,所以可以一定程度上轉換

E. 關於C指針 如何獲取指針指向的變數的值

因為指針變數b尚未賦值,就訪問它指向的內容,所以指令*b=3.14;是失敗的。

給指針賦值語句是這樣的:
b=&a; // 也就是你程序中注釋掉的那行
給指針指向的內容賦值語句是這樣的:
*b=3.14; // 前提是b必須先賦值
讀取指針指向的內容的語句是這樣的:
x=*b; // 其中x是一個float類型的變數,並且前提是b必須先賦值

F. C語言,指針的指針獲取和傳遞數據。

一般來說,這種的,並不是只讀取一個結構 而是文件中有一系列的不定個數的數據。

全讀回來 給主函數用

這樣 主函數中 定義

structstudent*stu;

調用

inttotal=ReadStudentInfo("path/file.bin",&stu);


然後 在ReadStudentInfo函數中

FILE*fp=fopen(filename,"rb");
//根據文件大小獲取總的數據個數
intsize;
fseek(fp,0,SEEK_END);
size=ftell(fp);
fseek(fp,0,SEEK_SET);

inttotal=size/sizeof(structstudent);

//然後申請內存
*pStudent=(structstudent*)malloc(sizeof(structstudent)*tatol);
//讀數據
fread(*pStudent,sizeof(structstudent),total,fp);
fclose(fp);
returntotal;

到主函數 就可以通過

stu[0] 到stu[total -1]來訪問讀到的數據了。

G. C語言 在字元串指針中讀取特定內容

代碼如下:

#include<stdio.h>
#include<string.h>

intmain()
{
char*text="";
char*s="content";
char*p;

//使用strstr函數查找字元串content的位置
p=strstr(text,s);

if(p!=NULL){

//跳過content使p指向content後面的內容。
p+=strlen(s);

//如果需要跳過content後面的那個空格p再加1
p++;

printf("%s ",p);
}

return0;
}

運行結果: