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;
}
運行結果: