int server_sockfd, client_sockfd; //server and client filedescriptors
socklen_t server_len, client_len;
struct sockaddr_in server_address; //server address
struct sockaddr_in client_address; //client address
int server_port = 10000;
char *def_server_address ="127.0.0.1";
server_len = sizeof(server_address);
memset(&server_address, 0, server_len );
server_address.sin_family = AF_INET;
if (x == 1) {
server_address.sin_addr.s_addr = INADDR_ANY;}
else {
server_address.sin_addr.s_addr = inet_addr(def_server_address);
}
server_address.sin_port = htons(server_port);
Run Code Online (Sandbox Code Playgroud)
我应该如何从server_address打印服务器的地址?使用printf.
我有这个代码:
int main(int argc, char * argv[])
{
int i;
printf("%d%s",argc,argv[1]);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我运行此代码为a.out a\=b=.我正在使用C-shell
它的输出是" a=b="是否有任何方式可以将其输出更改为" a\=b=".
#include<stdio.h>
#define UPPER 999999
#define LOWER 11111
int main(void)
{
// Local Declarations
double price = 89.99;
char grade = 'B';
int age = 97;
// Statements
printf("Homework 2:\n\nUsing printf\n");
printf(" age = %c, age\n");
printf("grade = %d, grade\n");
printf("price = %f, price\n\n");
printf("Using both printf and scanf\n");
printf("Enter a new value for age: ");
scanf("%d", &age);
printf("Enter a new value for grade: ");
scanf("%c", &grade);
printf("Enter a new value for price: ");
scanf("%lf", &price);
printf("Print the new values\n");
printf(" …Run Code Online (Sandbox Code Playgroud) 虽然像这样使用sprintf
sprintf("%.40s",str);
Run Code Online (Sandbox Code Playgroud)
我想给strlen(str)代替40这样的值.我该怎么做?我尝试用strlen(str)替换40,但是不起作用.给予像这样的价值
#define len strlen(str)
Run Code Online (Sandbox Code Playgroud)
并且使用%.len也不起作用,因为%.len用于"".
在这段代码中,scanf请求两次,我不确定是什么导致它这样做.
int t;
for(t = 0;t<5;t++)
{
//scanf requests twice for some reason
scanf("%s ",input);
fprintf(fp,"%s ", input);
printf("%d Word(s)\n", (t+2));
}
Run Code Online (Sandbox Code Playgroud)
输出是(用户输入的引号中的单词)
"hello"
"world"
1 Word(s)
"how"
2 Word(s)
"are"
3 Word(s)
"you"
4 Word(s)
"lostword"
5 Word(s)
Run Code Online (Sandbox Code Playgroud)
和
"hello world how are you "
Run Code Online (Sandbox Code Playgroud)
将被退还给我并保存到文件中.
我不明白为什么会这样:
Printf.sprintf "%08s" "s" = Printf.sprintf "%8s" "s"
- : bool = true
Run Code Online (Sandbox Code Playgroud)
换句话说,我希望:
Printf.sprintf "%08s" "s"
- : string = "0000000s"
Run Code Online (Sandbox Code Playgroud)
而不是实际结果:
- : string = " s"
Run Code Online (Sandbox Code Playgroud)
有人可以澄清为什么会这样吗?
我需要我的程序使用逗号作为小数分隔符显示输出.
根据这个链接:http://www.java2s.com/Code/Java/Development-Class/Floatingpointwithcommasf.htm你可以在Java中使用这样的东西:
System.out.printf("Floating-point with commas: %,f\n", 1234567.123);
Run Code Online (Sandbox Code Playgroud)
是否有标志或其他东西我可以用来在C中有类似的行为?
提前致谢!
#define power(a) #a
int main()
{
printf("%d",*power(432));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释o/p ??
o/p是
52
int printf (const char* format, ... );
Run Code Online (Sandbox Code Playgroud)
这是printf的签名.我不明白的是,printf如何知道第一个参数的长度(the const char* format).
它知道开始(因为它是一个指针,我得到它),但指针没有结束或什么.通常当你想要打印一些东西时你必须给出一个长度(例如,Linux sys_write),那么printf如何知道呢?
编辑:
我一直在查看我在ASM中编写的代码,我认为它只是寻找一个\0字符.那是对的吗?
我正在编写一个基本程序,以学习如何在C语言中使用基本输入/输出,并且效果很好。我唯一的问题是打印时,终端上字符串的末尾有一个“%”。这是我的代码:
#include <stdio.h>
int main(int argc, char **argv) {
char name[32];
printf("Enter your name: ");
scanf("%s", name);
printf("Hello, %s", name);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我运行程序时,输出为 Hello, Andrew%
有什么帮助吗?