当前位置:首页 » 编程语言 » c语言运行一直出现null
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言运行一直出现null

发布时间: 2023-01-31 17:15:16

A. c语言中NULL是什么意思

是空指针,指向地址为0的内存,在用法上,常用来表示不存在,x0dx0a例:if((fp=fopen("stu","rb"))==NULL)x0dx0a exit(0);x0dx0a解析:如果打开的这个名为stu的文件不存在,就退出程序;

B. C语言中NULL是什么意思

在C语言中,NULL和0的值都是一样的,但是为了目的和用途及容易识别的原因,NULL用于指针和对象,0用于数值。对于字符串的结尾,使用'\0',它的值也是0,但是让人一看就知道这是字符串的结尾,不是指针,也不是普通的数值。
拓展资料:
关于NULL的使用

编程工作中有一类比较容易犯的错误--指针地址未进行正确的更新赋值就加以使用,这往往会造成很严重的后果(对内存区进行错误的涂抹)。所以一个良好的习惯是,当一个指针的工作稍事休息,先把它赋值为NULL,待到再度使用时,重新对其赋值以及进行指针类型转化。
前面说到"NULL指针无法再进行任何数据访问",其实是视编译器功能而定的。0位置指向的是程序起始,对于不同的编译器,NULL指针的操作结果是不同的:有些是不准读写,有些是只读,甚至读写都允许。编译器是人定的。

C. C语言字符数组为什么输出了null

strcat和strcat_s的返回值是不一样的,你用strcat可以这么写,因为返回的是合并后字串的地址,但strcat_s返回不是地址,返回的是错误码,0表示成功,你这里返回的是0,所以就是null

D. C语言中是NULL什么意思

c语言null的意思和0的值是一样的,用于指针和对象。

C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%到20%。因此,C语言可以编写系统软件。

(4)c语言运行一直出现null扩展阅读

常量与变量

常量其值不可改变,符号常量名通常用大写。

变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。

数组

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,中括号内的索引值是从0算起的。

E. c语言 读文件 结果为null是什么情况

大多数情况下为0

可以从头文件中看到其宏定义

#ifndefNULL
#ifdef__cplusplus
#defineNULL0
#else
#defineNULL((void*)0)
#endif
#endif
#defineoffsetof(s,m)(size_t)&(((s*)0)->m)

F. C语言中NULL是什么意思

朴素的0值或者无类型的0值(void 0)

计算机语言中为了确定数据宽度(占用字节数)以及数据编码,一般都是有类型定义的,比如C语言中bool为8位逻辑值(单字节),int 为16位整数(双字节),long 为32位整数(4字节),float是32位浮点数(4字节),double为64位浮点数(8字节),等等。

因此,数据类型定义了数据宽度和数据编码,因此严格意义上说,一个16位整数的0与一个32位整数的0,以及浮点数的0都是不同的,原因是数据宽度不同,特别是浮点数的0不是绝对的0值,它可能是一个0.0000000000000001很小的数,但是有时候我们需要一个明确的通用的或者一般意义的0值来表示无效值,比如为了表示指针未被赋预有效地址,我们设置一个0值,为了防止代码有歧义,也为了可读性(一看就知道表示未定义指针),所以C或者C++中都使用一个特殊定义NULL表示无效值,其本质就是未定义具体数据类型的0值。

由于没有定义数据类型,因此也就不具有具体数据宽度和编码,当NULL赋值给16位变量时就是16位全0,当赋值给32位变量时,其值就是32个全0,也不会出现像浮点数那样产生精度误差。这就是虚类型的意义,任何编译器都认可这种约定,这样代码移植的时候不会因为软硬件环境改变而出现问题(CPU、编译器改变)。

你可以在任何编译器中,点击NULL右键查看定义。


这里稍微解释一下,上图高亮部分是表示C++,也就是如果当前语言是C++,则直接定义NULL为 0值,如果是其他(可能是C),则明确定义为 void 0,因为C++编译器会自动转换。#ifndef 宏命令表示:如果当前环境中其他模块还未定义NULL,这就定义它。

G. c语言,运行出现 stream !=NULL,而且不用文件直接在dos输入结果有误,两个问题,求助,好好痛苦。。

读文件,读语句要配合文件里的数据。
你没有给出数据例子,所以不好说哪里有问题。
按你的程序,输入文件第一个数是 n
然后读 n 个 名字。
接着 做 n 次 大循环
读1 个名字, 读2个整数,如果第2个整数number 是 0,循环结束,
否则 k 循环number 次,读名字,调finder()和计算。

finder() 程序 里,控制条件不全,当找不到时怎么办?
giver=np[j].money/np[j].number; // 这种除法有精度问题,最好用 float 型。
==========
假定是这个数据,程序可以通过
3
Zhang
Wang
Li
Wang
8
2
Zhang
Li

H. C语言中的NULL

在头文件 中 定义的一个常量 NULL=0;

用于指将指针 悬空(不指向任何位置)楼上的指向0内存不对的.
int *p=NULL;
NULL是个好东西,给一出生的指针一个安分的家

NULL不是被定义为0,就是被定义为(void *)0,这两种值几乎是相同的。当程序中需要一个指针时(尽管编译程序并不是总能指示什么时候需要一个指针),一个纯粹的零或者一个void指针都能自动被转换成所需的任何类型的指针。

NULL总是等于0吗?
对这个问题的回答与“等于”所指的意思有关。如果是指“与。比较的结果为相等”,例如:
if(/* ... */)
{
p=NULL;
}
else
{
p=/* something else */;
}
/* ... */
if(p==0)
那么NULL确实总是等于0,这也就是空指针定义的本质所在。

如果是指“其存储方式和整型值。相同”,那么答案是“不”。NULL并不必须被存为一个整型值0,尽管这是NULL最常见的存储方式。在有些计算机中,NULL会被存成另外一些形式。

如果想知道NULL是否被存为一个整型值0,可以(并且只能)通过调试程序来查看空指针的值,或者通过程序直接将空指针的值打印出来(如果将一个空指针强制转换成整类型,那么=所看到的很可能就是一个非零值)。

I. C语言中NULL问题

要想知道为什么会出现死循环,首先必需明白while(gets(buff)!=NULL)这行代码的含义。先看一下gets函数的声明:
char *gets(
char *buffer
);
它有一个参数buffer,指向char类型的指针。指向输入字符串缓冲区地址。如果函数调用成功则它的返回值为buffer的地址,如果调用失败则返回NULL。
所以while(gets(buff)!=NULL)这行代码就是只要gets函数调用失败就停止循环,但一般这个函数调用失败的机率是很小的,所以就出现了死循环。要明白这一点必需知道,gets函数的返回值为输入字符串的地址,而NULL不等于空字符串,也不等于空字符串的地址。
把那个程序改为如下的形式就对了。

#include "stdio.h"
main()
{ char buff[256];
while(strcmp(gets(buff),"")!=0)
puts(buff);
}
/*注:strcmp为字符串比较的函数,当两字符串相同时返回0*/

J. c语言为什么我的运行结果会出现null,请大牛们帮帮

1.
你这个程序的功能是用来将两个字符串合并起来
并实现输出。
2.
你程序前面的合并都对,在输出的地方,出错了错误如下:
//printf("%s\n",str[i+j]);
//原来出错的地方
printf("%s\n",str);
//改正后的地方
3.
下面是修改后的程序,已经可以输出链接后的字符串了。
方法
#include<stdio.h>
void
main()
{
char
str1[50],str2[50],str[50];
int
i,j;
printf("input
str1:\n");
scanf("%s",str1);
printf("input
str2:\n");
scanf("%s",str2);
for(i=0;str1[i]!='\0';i++)
{
str[i]=str1[i];
}
for(j=0;str2[j]!='\0';j++)
{
str[i+j]=str2[j];
}
str[i+j]='\0';
//printf("%s\n",str[i+j]);
//原来出错的地方
printf("%s\n",str);
//改正后的地方
}
运行结果如下图: