所以我正在做一个练习,看看我是否正确使用了 memset。
这是我编写的原始代码,它应该将一些地址设置为值 50:
int main(){
int *block1 = malloc(2048);
memset(block1, 50, 10);
// int count = 0;
for (int *iter = block1; (uint8_t *) iter < (uint8_t *)block1 + 10; iter = (int *) ((uint8_t *)iter + 1) ){
printf("%p : %d\n", iter, *iter);
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我希望内存中的每个地址都存储值 50。但是我的输出是:
(地址:值)
0x14e008800 : 842150450
0x14e008801 : 842150450
0x14e008802 : 842150450
0x14e008803 : 842150450
0x14e008804 : 842150450
0x14e008805 : 842150450
0x14e008806 : 842150450
0x14e008807 : 3289650
0x14e008808 : 12850
0x14e008809 …Run Code Online (Sandbox Code Playgroud) 有人可以解释一下_IO_stdin_used下面这一行的内容吗:
114a: 48 8d 3d b3 0e 00 00 lea rdi,[rip+0xeb3] # 2004 <_IO_stdin_used+0x4>
Run Code Online (Sandbox Code Playgroud)
抱歉这个菜鸟问题。
我这里有一些代码:
int n = 0;
for(n = 1;n<4;n++)
printf("%d",n);
return 0;
Run Code Online (Sandbox Code Playgroud)
为什么它返回“123”而不是“3”?
我尝试用谷歌搜索这个问题,但找不到任何有用的东西。
插入所有值后,我期望最终的 printf 语句给出方程的最终结果
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
char *carModel;
float tankRange;
float gasCost;
float costTank;
float gallonsTank; //gallons in full tank
float mpg; //miles per gallon
float costMile;
carModel = malloc(256);
printf("What is the model of car? " );
scanf("%255s", &carModel); // Don't read more than 255 chars
printf("How many miles can be driven on a full tank? " );
scanf("%f", &tankRange);
printf("What is the gas cost per gallon? " );
scanf("%f", &gasCost);
printf("How much does it …Run Code Online (Sandbox Code Playgroud) 我编写了一个简单的程序,将两个数字相乘。当我将它与 scanf 输入相乘时,它会打印出随机答案......
#include<stdio.h>
int main()
{
int a, b ,c = a * b;
printf("Type two no.s to be multiplied, ensuring space between them");
scanf("%d%d", &a, &b);
printf("The required output is = %d\n", c);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我输入 8 和 7 时,我得到 4897 作为我的答案,那么答案一定是 56。
为什么函数在将其作为字符串printf分配给它时返回 6 而不是 0 ,尽管它什么也没打印?NULL
int main(void)
{
int x;
x = printf("%s", NULL);
printf ("\n%d", x);
}
Run Code Online (Sandbox Code Playgroud)
输出是:
(null)
6
Run Code Online (Sandbox Code Playgroud) 所以,这是我的 C 代码。当我为了学习格式说明符而摆弄我的代码时,尤其是%c:
#include <stdio.h>\n\nvoid main()\n{\n double a = 0.21;\n printf("%c", a);\n}\nRun Code Online (Sandbox Code Playgroud)\n我碰巧遇到这样的情况:即使我将浮点值作为printf()格式说明符的函数参数传递%c,编译器(我的编译器是gcc)也会以某种方式将该值转换为与 ASCII 字符相对应的0.21十进制值。223\xc3\x9f
对于a = 0.22输出为:)其 ASCII 表中的十进制值为29
我在VS code和CLion IDE上运行了代码,但结果是相同的。现在这让我摸不着头脑好几天了,我无法弄清楚。
\n我想知道值0.21和0.22是如何转换成十进制的223,29或者它们如何分别对应于 ASCII 223 和 29 ie\xc3\x9f和)。
由于值 0.21、0.22 不对应于任何 ASCII,因此我希望程序不会打印任何内容。
\n但根据输出,我认为这可能与二进制文件有关。
\n由于二进制中的 0.21 是 0.00110101110000101000111101011100...
\n& 223 是 11011111 …
为什么当我只使用整数时程序运行良好?当我为变量“a”插入一个数字然后按 Enter 键后,不会\n保留在缓冲区中吗?如果它确实存在,那为什么我b也可以初始化?如果我定义b为 char 那么b输出将是b 10;换句话说,空换行符。例如,如果我想多次使用(使用什么?)为许多人输入一个名字,我会有什么问题吗?我需要一个清除缓冲区的函数吗?那么出了什么问题以及如何解决这个问题
#include <stdio.h>
int main() {
int a,b;
printf("a ");
scanf("%d",&a);
printf("a=%d",a);
printf("\nb ");
scanf("%d",&b);
printf("b=%d",b);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有以下格式存储在文件中的用户名和推文:
USERNAME1:MESSAGE1:消息2:...:messageN
USERNAME2:MESSAGE1:消息2:...:messageN
...
usernameN:MESSAGE1:消息2:...:messageN
如果文件有一行,其中username ==带有新消息的用户名,我想将newMessage追加到上面格式化的行.
我如何使用C(如果重要的话,使用cygwin)这样做?这是我写的代码块,我遇到了麻烦.
while(fgets(line, MAXBUFF, fp) != NULL){ // get each line of file
if (strncmp(line, tweetUsr, strlen(tweetUsr)) == 0){
usrFound = 1;
fprintf(filePointer, ":");
fprintf(filePointer, tweet);
break;
}
memset(&line[0], 0, sizeof(line)); //reset line array
}
Run Code Online (Sandbox Code Playgroud)
我期望发生的是将消息附加到行的末尾,因为filePointer应该指向当前行的末尾,但实际发生的是消息被附加到文件的末尾.
我在fopen中使用r +模式尝试了这个.为了能够追加当前行而不是文件末尾,我该怎么做?