Tag: 输出

为什么对于长度为k的字符串,我需要char 而不是char ?

所以我有一组简单的代码: #include int main() { char x[3] = “ABC”; // (*) puts(x); return 0; } 它返回一个奇怪的输出: ABC-a 使用这个问题的最佳答案,我发现当我将x[3]更改为x[4]一切运行正常。 但为什么? 为什么我在x[3]上得到一个奇怪的输出,为什么x[4]很好?

如何从C中的fgets中删除多余的字符输入?

我听说使用gets()在C编程中很糟糕,并且使用fgets更安全……所以我使用的是fgets。 但是,我遇到了fgets的问题:我输入了太多字符,不知怎的,它溢出了。 如何摆脱额外的输入字符? char answer[4]; char answer2[4]; fgets(answer,sizeof(answer),stdin); printf(“answer: %s\n”,answer); fgets(answer2,sizeof(answer2),stdin); printf(“answer2: %s\n”,answer2); 例如,对于第一个fgets,我输入123456,我得到的输出是 answer: 123 answer2: 456 如何删除456进入下一个fgets输入? 在为第一个fgets输入123456之后,我想要这样的输出: answer: 123 然后,用户继续输入下一个fgets的输入…

将stdout和stderr重定向到同一文件并还原它

我将我的c程序的stderr和stdout的输出重定向到两个文件,然后恢复原始的stdout和stderr: int sout = dup(fileno(stdout)); freopen(“test.txt”,”w”,stdout); int serr = dup(fileno(stderr)); freopen(“test.txt”,”a”,stderr); //some output…. dup2(sout,fileno(stdout)); close(sout); dup2(serr,fileno(stderr)); close(serr); 这就是代码示例。 这很有效。 但是我想将stdout和stderr重定向到同一个文件(以后再恢复它),以便输出按照与不重定向stderr和stdout时在控制台输出上排序的顺序相同的顺序排序。 我怎样才能做到这一点?

打印值0x89时的奇怪输出(-119)

正如标题所说,运行以下代码时,我得到一个“奇怪”的结果: #include int main() { char buff[4] = {0x17, 0x89, 0x39, 0x40}; unsigned int* ptr = (unsigned int*)buff; char a = (char)((*ptr <> (3*8)); char b = (char)((*ptr <> (3*8)); char c = (char)((*ptr <> (3*8)); char d = (char)((*ptr <> (3*8)); printf(“0x%x\n”, *ptr); printf(“0x%x\n”, a); printf(“0x%x\n”, b); printf(“0x%x\n”, c); printf(“0x%x\n”, d); return 0; } […]

C温度转换程序保持输出0华氏度到摄氏度

当我尝试将华氏温度转换为摄氏温度时,我在C中的温度转换程序保持输出0。 从Celsius到Fahrenheit的转换似乎工作得很好。 对于函数和部分,我做了完全相同的事情但是第二次转换时我一直得到0。 有人可以帮助我或告诉我我做错了什么? #include //Function Declarations float get_Celsius (float* Celsius); //Gets the Celsius value to be converted. void to_Fahrenheit (float cel); //Converts the Celsius value to Fahrenheit and prints the new value. float get_Fahrenheit (float* Fahrenheit); //Gets the Fahrenheit value to be converted. void to_Celsius (float fah); //Converts the Fahrenheit value to Celsius and […]

为什么字符串在strcat()之后被改变了?

这是源代码 int main() { char str[]=”dance”; char str1[]=”hello”; char str2[]=”abcd”; strcat(str1,str2); printf(“%s”,str); } 输出 – bcd 为什么str在strcat(str1,str2);之后被改变strcat(str1,str2);

代码块重定向输入输出

我是代码块的新手,我似乎无法使用输出的命令行参数。 有谁知道怎么做? 我现在能够读取从argv [1]传递的文件但是,程序不会自动读取给定文件的输入,也不会将输出正确输出到文件输出。 我知道它是在set程序的参数上,我的参数行是:list.txt output 经过一些研究,我看到一个人这样做: ./output,好像在运行一个程序给出输入和输出,无论如何,我也尝试过无济于事。 我是否需要使用文件处理程序与之交互? 它没有成功,简单的getchar()应该从传递的输入文件中读取。 我在这里想念的是什么? 提前致谢

输出C字符串程序

#include int main() { char s[2]=”a”; s[1]=’b’;s[2]=’c’;s[3]=’d’;s[5]=’e’; printf(“%s $%c$”,s,s[4]); return 0; } 1.当我在C(gcc-4.7.2)中运行该程序时,由于缺少空字符(’\ 0’),我预期运行时错误。 2.如果程序仍然成功编译并执行,因为s [4]尚未初始化,我预计那个地方会有一些垃圾值。但这里我也错了。 上述程序的输出是:abcde $$两个$(dollor)之间没有字符表示printf跳过s [4]。 这是一个相同的ideone链接: http ://ideone.com/UUQxb2 解释这种行为的原因(输出)?

c 中的意外输出

我是c语言的新手。 我只是想知道为什么我的宏不能正常工作。 它输出为13,我的预期输出为24。 #include #define mult(a,b) a*b int main() { int x=4,y=5; printf(“%d”,mult(x+2,y-1)); return 0; }

如何将输入文本光标定位在C?

在这里,我有一个非常简单的程序: printf(“Enter your number in the box below\n”); scanf(“%d”,&number); 现在,我希望输出看起来像这样: Enter your number in the box below +—————–+ | |*| | +—————–+ 哪里,| * | 是用户键入其值的闪烁光标。 由于C是一个线性代码,它不会打印盒子艺术,然后要求输出,它将打印顶行和左列,然后输入后打印底行和右列。 所以,我的问题是,我可以先打印盒子,然后有一个function将光标放回盒子里吗?