使用下面的例子,请解释为什么有时候不需要return语句?函数具有返回类型,但缺少return语句.同时,程序编译和工作正常.
请帮助我更好地理解这一点
char* handleInput() {
fgets(buffer, 1024, stdin);
**// return buffer;** <---- COMMENTED RETURN
}
void main() {
char* ptr = handleInput();
int flag = atoi(ptr);
if (flag < 0) break;
printf("You entered: %s\n", ptr);
}
Run Code Online (Sandbox Code Playgroud) 的时候,不包括%d和%C规范之间的空白在scanf函数的在下面的程序格式字符串,并在运行时间期间为"4小时"给输入,则输出是"整数= 4和字符= .
在这种情况下,变量"c"如何获取输入,如果我在%d和%c规范之间包含空格,它会有什么不同?
#include <stdio.h>
int main()
{
char c;
int i;
printf("Enter an Integer and a character:\n");
scanf("%d %c",&i,&c);
printf("Integer = %d and Character = %c\n",i,c);
getch();
}
Run Code Online (Sandbox Code Playgroud) 想要在shell脚本中执行MYSQL存储过程
示例:Employee_config ('ClientId','Data')是 mysql 中的过程名称。
当我尝试输入如下所示的 shell 脚本时
CALL Employee_config ('ClientId','Data') we are getting CALL: command not found
EXECUTE Employee_config ('ClientId','Data') we are getting EXECUTE: command not found
Run Code Online (Sandbox Code Playgroud)
如果有人可以更新如何从 shell 脚本调用 MySQL 存储过程,那就太好了。
我为服务器实现编写的代码不起作用.程序无法bind()正确套接字地址并生成错误.
#include<stdio.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<string.h>
#include<stdlib.h>
#include <netdb.h>
int main(int argc , char* argv[])
{
int socket_descriptor;
struct sockaddr_in server;
char buffer[512];
int rval;
int socket_a;
if(socket_descriptor = socket(AF_INET, SOCK_STREAM , 0) < 0)
{
perror("Error at creating the socket");
exit(1);
}
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(5000);
if(bind(socket_descriptor,(struct sockaddr * )&server,sizeof(server)) < 0)
{
perror("Error at binding");
exit(1);
}
}
Run Code Online (Sandbox Code Playgroud)
绑定时出错:非套接字上的套接字操作.
我有麻烦open()。它总是返回-1,我不知道代码出了什么问题。它一直在说:
Run Code Online (Sandbox Code Playgroud)r1: No such file or directory
但是txt文件与C程序位于同一目录中。
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <fcntl.h>
#define BUFFSIZE 256
char upper(char c);
int main(void){
int fd1, read1, fd2, write2;
char *buffer[BUFFSIZE];
fd1 = open("minuscole.txt", O_RDONLY);
if (fd1 < 0) { perror("r1"); exit(1); }
read1 = read(fd1, buffer, BUFFSIZE);
close(fd1);
printf("%d", read1);
if(fd2 = open("maiuscole.txt", O_WRONLY | O_CREAT | O_TRUNC, 0644) > 0){
write2 = write(fd2, buffer, BUFFSIZE);
}
close(fd2);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望它创建一个名为:的文件,"maiuscole.txt" …
我想运行一些简单的例子来了解fork()系统调用是如何工作的。
它的工作但需要在打印后按回车键退出程序child process。
#include <stdio.h>
#include <unistd.h>
int main()
{
pid_t pid;
pid = fork();
if(pid == 0){
printf("child process\n");
}
else{
printf("parent process\n");
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
ss@ss:~$ gcc dd.c -o dd
ss@ss:~$ ./dd
parent process
ss@ss:~$ child process
Run Code Online (Sandbox Code Playgroud)
在屏幕程序上打印子进程后,需要按回车键返回终端。
终端等待输入新命令,如果只是按回车返回,写
ss@ss:和确定。
或者我们可以输入任何其他终端命令并执行。
我想知道为什么会发生这种行为,如果打印后程序真的完成了child process为什么终端不显示ss@ss:~$
这是我的机器信息
gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.4) 5.4.0 20160609
Run Code Online (Sandbox Code Playgroud)
uname -a
Linux ss 4.8.0-36-generic #36~16.04.1-Ubuntu SMP Sun Feb 5 09:39:41 UTC 2017 i686 i686 i686 GNU/Linux …Run Code Online (Sandbox Code Playgroud) 据我了解,浮点存储在XMM寄存器中,而不是诸如的通用寄存器中eax,因此我做了一个实验:
float a = 5;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,a被存储1084227584在XMM寄存器中。这是程序集版本:
.text
.global _start
.LCO:
.long 1084227584
_start:
mov .LCO, %eax
movss .LCO, %xmm0
Run Code Online (Sandbox Code Playgroud)
执行上述组件和使用它的调试gdb显示,在值eax将是1084227584,然而,在值ymm0是5。
这是我的问题:
1- XMM寄存器有什么特别之处?除了SIMD指令,它们是唯一存储浮点的寄存器类型吗?
为什么不能在常规寄存器中设置相同的位?
2- float和double值始终存储为浮点吗?
我们永远不能将它们存储为fixed pointC或汇编语言吗?
我想编写一个 C 程序,将文件的内容打印到终端中。
但是,我们不允许使用该<stdio.h>库,因此printf无法使用诸如此类的功能。
将东西打印到终端的替代方法是什么?
我正在做一些搜索,但我找不到直接的答案,因为大多数人只是使用printf.
我不小心将.C[note to Uppercase C ] 扩展名分配给 UBUNTU 16.04 LTS 中的 C 源代码,并使用 Gedit 程序打开它以输入我的代码。
gcc 编译器无法将其识别为 C 编程源代码,并在尝试编译时产生错误。
\nUBUNTU 文件管理器将其显示为 cpp 文件。
\n代码
\n#include <stdlib.h>\n\nint main(){\n\n int * c = malloc(sizeof(int));\n free(c); \n \n return 0; \n}\nRun Code Online (Sandbox Code Playgroud)\ngcc编译命令,输出:
\n$gcc test.C -o test\ntest.C:8:18: error: invalid conversion from \xe2\x80\x98void*\xe2\x80\x99 to \xe2\x80\x98int*\xe2\x80\x99 [-fpermissive]\n int * c = malloc( sizeof(int) );\nRun Code Online (Sandbox Code Playgroud)\n正如我们所知,这是一个 C++ 特定错误,我认为 gcc 的行为就像 C++ 文件一样,如本\n 中所述。
\n这是我的系统信息
\nLinux …Run Code Online (Sandbox Code Playgroud) TL; DR:
printf()printLotInfo()通过值时打印垃圾.
码
#include <stdio.h>
#include <stdlib.h>
#include <stddef.h>
#include <math.h>
#include <string.h>
typedef struct Time
{
int hour; //Hour of day
int minute; //Minute of hour
} Time;
typedef struct Car
{
char * plateNumber; //String to hold plate
char hasPermit; //True/False
Time * enteringTime; //Time Struct
int lotParkedIn; //Where is the car located
} Car;
typedef struct ParkingLot
{
int lotNumber; //Lot identifier
double hourlyRate; //$$/h
double maxCharge; //Maximum daily charge
int capacity; //How many …Run Code Online (Sandbox Code Playgroud) 当我使用c=c++;指令时,为什么C的值不会改变.
码
#include <stdio.h>
int main()
{
int t, c=0,d;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
if(n>=50)
{
c=c++;
printf("%d\n",c);
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)