C语言 获取字符型指针长度的问题

C语言 获取字符型指针长度的问题,第1张

。。。你函数都用错了,不要用fgets读取文件里的单词,用fscanf(infile,"%s",buffer),根据%s的特性,这个语句只会读取单词,不会读取空格,另外你的标题。我没看懂,获取字符型指针长度? 这个指针长度你是获取不了的,因为指针存的是地址,那么任何一个类型的数据都可能会放在地址很大的内存上,所以对于指针来说,要求就是必须能容纳下很大的地址,所以不管是指向哪个类型的指针 他们占的字节都是一样的,而且是4个字节

1 ps是一个指针,指向这个字符串首地址。

2 之所以输出的不是C,是因为printf函数会输出ps首地址开始到空结束符之间的所有内容。

3 要输出首个字符可以用ps

指针的问题

char a;代表一个字符指针,它用来指向一个字符地址或者字符串首地址,它指向的地址必须是合法的地址,即:系统分配,或者动态分配的地址

char a;这样直接使用的话,它表示为“野指针”,即它指向的地址是不合法的地址,程序极易崩溃

指针使用时,必须先分配空间

打印字符指针地址变成字符串的原理是基于C语言中指针变量的特性。C语言中的指针变量可以引用内存中任意地址,指针变量可以把内存地址视为字符串,因此可以把字符串打印出来。

当使用指针变量时,可以通过把字符串分配到某个内存地址来实现。此时指针变量将指向该内存地址,且可以通过访问该指针变量来获取字符串的值。因此,可以通过把指针变量的地址作为参数传递给printf()函数,来将字符串打印出来。

另外,可以通过使用字符指针变量来使用malloc()函数,来分配内存空间,将字符串存储在该内存空间中,然后将指针变量指向该内存空间,从而实现将字符串打印出来。

此外,还可以通过将字符指针变量作为参数传递给strcpy()函数,将字符串复制到指定的内存空间中,然后把指针变量指向该内存空间,从而实现将字符串打印出来。

总之,打印字符指针地址变成字符串的原理是基于C语言指针变量的特性,可以通过把字符串分配到某个内存地址,通过使用malloc()函数,将字符串存储在该内存空间中,或者将字符串复制到指定的内存空间中,然后把指针变量指向该内存空间,从而实现将字符串打印出来。

定义成字符数组的时候,数组名就是指向数组的首地址的指针,数组在一串连续的地址中,当执行复制向后移动指针的时候会依次读取字符,没问题,但是如果是指针,它指向的是在静态区的一串字符串的首地址,你要把指针向后移动,他的下一个指针指向何处就是个问题了,也就是你访问了不属于你的内存地址,所以出错了!!!

代码如下:

#include <stdioh>

#include <stringh>

int main()

{

char text = "ad bc ef content a string test test test";

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\n", p);

}

return 0;

}

运行结果:

1当文件不太大的时候,可以先打开文件,然后读取文件所有内容到一个缓冲区里,然后使用strstr来查找关键字在缓冲区哪个位置,对应文件位置用fseek就可以。

2当文件大的时候,因为你要的是字符串,为了防止漏掉,你最好不要用缓冲区去一部分一部分套。你必须打开文件,然后用fgetc这样的函数一个字符一个字符去读。当发现与关键字首字符相同的字符时,查看这个字符与后面的字符串是否能组成关键字,如果不能则继续查找,直到文件结束。

以上就是关于C语言 获取字符型指针长度的问题全部的内容,包括:C语言 获取字符型指针长度的问题、关于指针指向字符串首地址问题、字符串指针问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9785922.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存