鉴于以下计划:
#include <stdio.h>
int main()
{
char buf[1024];
scanf("%s", buf);
printf("----> %s", buf);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
执行如下:
grep ....| a.out
要么
echo ....| a.out
我收到一个Segmentation fault错误.有谁能解释为什么?
我用C编写了一个简单的程序:
#include <stdio.h>
main(){
int a[20], b[20];
int n, i;
printf("Enter a number: ");
scanf("%d", &n);
for(int j=0; j<n; j++){
printf("Enter a number for a[%d]: ", j);
scanf("%d", a[j]);
printf("\n");
}
}
Run Code Online (Sandbox Code Playgroud)
此代码编译但在n大于2时运行,并且在向阵列输入第二个数字时发生崩溃.
我并不沮丧为什么它会崩溃,请向我解释.
我正在尝试阅读3个花车.我尝试用浮动和双打来做这个,但我对两者都有相同的行为.
输入示例:
3 1 2
32.0 54.7 -2
Run Code Online (Sandbox Code Playgroud)
第一行有3个整数,第二行有3个浮点数:
我怎么读:
vector<int> order;
vector<double> numbers;
unsigned int order_number;
double number;
char input_character;
while (true)
{
scanf("%d", &order_number);
order.push_back(order_number);
scanf("%c", &input_character);
if (input_character == ' ')
continue;
else
break;
}
while (true)
{
scanf("%lf", &number);
numbers.push_back(number);
scanf("%c", &input_character);
if (input_character == ' ')
continue;
else
break;
}
printf("%d %d %d\n", order[0], order[1], order[2]);
printf("%lf %lf %lf\n", numbers[0], numbers[1], numbers[2]);
Run Code Online (Sandbox Code Playgroud)
打印时,我得到:
32.000000 54.700000 -2.000000
Run Code Online (Sandbox Code Playgroud)
我想要32.0,54.7 而且-2.我知道我可以指定要打印的小数位数%.x,但我需要打印输入中给出的数量. …
我sprintf在嵌入式系统(Libelium Waspmote,类似于Arduino)上遇到了一个奇怪的问题,其中sprintf输出的字符多于格式说明符给出的字符.在这个特定的实例中,我%02X用来输出数组中十六进制的字节值.但是在某些字节上,不是写入2个字符,而是写入4个字符,并FF在实际字节值之前加上前缀.snprintf行为类似,只是它尊重指定的缓冲区大小,只打印前缀.
作为参考,这里是打印数组内容的代码片段:
char *pduChars = (char *) malloc(17*sizeof(char));
pduData.toChar(pduChars);
for (int i = 0; i < 17; i++) {
char asciiCharsS[5];
char asciiCharsSN[3];
int printedS = sprintf(asciiCharsS, "%02X", pduChars[i]);
int printedSN = snprintf(asciiCharsSN, 3, "%02X", pduChars[i]);
USB.print(printedS);
USB.print(" ");
USB.print(printedSN);
USB.print(" ");
USB.print(asciiCharsS);
USB.print(" ");
USB.print(asciiCharsSN);
USB.println(" ");
}
Run Code Online (Sandbox Code Playgroud)
并且该片段的输出(仅缩写为错误字节):实际字节序列应为0x00 0xFC 0xFF 0xFF 0x48 0xA5 0x33 0x51
sprintf snprintf sprintf Buffer snprintf Buffer
…
2 2 00 00
4 4 FFFC …
我无法理解由于以下代码而出现的错误.我正在尝试使用打开文件fopen(),但错误对我没有意义.所以请解释整个事情.
10 - FILE * THE_FILE_YOU_READ;
11 - THE_FILE_YOU_READ = fopen("num.txt","r");
Run Code Online (Sandbox Code Playgroud)
仅这两行就会产生一些警告和错误,如下所示:
11 - warning: data definition has no type or storage class [enabled by default]
11 - error: conflicting types for 'THE_FILE_YOU_READ'
10 - note: previous declaration of 'THE_FILE_YOU_READ' was here
11 - warning: initialization makes integer from pointer without a cast [enabled by default]
11 - error: initializer element is not constant
Run Code Online (Sandbox Code Playgroud)
我正在使用Code :: Blocks,如果它完全相关的话.我还没有在程序的其他地方声明这个变量`THE_FILE_YOU_READ.任何想法,或者这对我来说只是一个愚蠢的疏忽?
我使用一个非常简单的一行代码来获取ubuntu上C的当前时间,但它给了我以下错误:
Called object 'time' is not a function
代码是:
int currentTime = (unsigned int)time(NULL);
这个错误完全没有意义,可能的原因是什么?
我是C初学者,我想连续两次调用ungetc()虽然我知道在常规C中它是不允许的.有人告诉我,我可以修改Fflush()做这项工作,但我不知道该怎么做.
这是我的代码,我Fflush唯一允许的代码,我ungetc()希望它允许两次.
#define altUngetc(c, fp) ((fp)->next > (fp)->buffer && (c) != EOF ? \
*--(fp)->next = (c) : EOF)
int altGetc(ALT_FILE *fp) {
if (fp->next == fp->buffer + fp->bufSize)
altFflush(fp);
return fp->flags & FILE_ATEOF ? EOF : *fp->next++;
}
int altFflush(ALT_FILE *fp) {
int res;
if (fp->fd < 0 || fp->flags & FILE_ATEOF)
return EOF;
if (fp->flags & FILE_READ) {
res = read(fp->fd, fp->buffer, BUF_SIZE);
if (res == 0)
fp->flags |= FILE_ATEOF;
fp->bufSize = …Run Code Online (Sandbox Code Playgroud) 请帮忙.这个简单的程序假设计算用户输入他们想要的每个房子的数量.每个房子增加的窗户乘以它.并且对备件的总量应用1%以上的窗口.为什么备件不工作?
/*************************************
* PROGRAM: WindowCalculator
* AUTHOR: Matthew Nickles
* DATE: 9/6/2018
* NOTES: This is for educational purposes, the program calculates
* how many windows for each house plan a city builder would get.
**************************************/
/* PREPROCESSOR COMMANDS */
#include <stdio.h>
/* MAIN PROCESSING CONTROL */
int main()
{
/* VARIABLE DECLARATIONS */
int MontgomeryHouses; /*20 Windows per a house*/
int KetteringHouses; /*15 Windows per a house*/
int SaxonHouses; /*12 Windows per a house*/
int TotalWindows; /*Total calculation of …Run Code Online (Sandbox Code Playgroud)