标签: stdio

printf("%d",1.0)是否未定义?

根据C89草案第4.9.6.1节,%d是一个字符,用于指定要应用的转换类型.

在我看来,转换一词意味着printf("%d", 1.0)定义了.

请确认或反驳此事.

c printf glibc stdio libc

1
推荐指数
2
解决办法
311
查看次数

管道中的分段故障

鉴于以下计划:

#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 linux stdio segmentation-fault

1
推荐指数
1
解决办法
1333
查看次数

在填充数组时崩溃

我用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时运行,并且在向阵列输入第二个数字时发生崩溃.

我并不沮丧为什么它会崩溃,请向我解释.

c arrays stdio

1
推荐指数
1
解决办法
74
查看次数

程序读取太多十进制的情况

我正在尝试阅读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,但我需要打印输入中给出的数量. …

c++ floating-point stdio

1
推荐指数
1
解决办法
1107
查看次数

s(n)printf打印的字符数多于格式说明符指定的字符数

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 …

c embedded stdio

1
推荐指数
1
解决办法
1018
查看次数

由fopen()和FILE引起的原因不明的错误

我无法理解由于以下代码而出现的错误.我正在尝试使用打开文件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.任何想法,或者这对我来说只是一个愚蠢的疏忽?

c fopen file stdio

1
推荐指数
1
解决办法
2681
查看次数

C读取重命名的文件

在C中,如果我使用FILE指针和 (fgets或)读取文件并重命名该文件,该怎么办?fread
FILE *f

c file stdio

1
推荐指数
1
解决办法
91
查看次数

被叫对象'时间'不是一个功能

我使用一个非常简单的一行代码来获取ubuntu上C的当前时间,但它给了我以下错误: Called object 'time' is not a function

代码是: int currentTime = (unsigned int)time(NULL);

这个错误完全没有意义,可能的原因是什么?

c time stdio

1
推荐指数
1
解决办法
2585
查看次数

修改fflush(),保证在C中连续两次调用ungetc()

我是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)

c stdio ungetc fflush getc

1
推荐指数
1
解决办法
237
查看次数

发布一些简单的逻辑并获得一些东西来打印C++ HouseWindowsLab

请帮忙.这个简单的程序假设计算用户输入他们想要的每个房子的数量.每个房子增加的窗户乘以它.并且对备件的总量应用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)

c stdio

1
推荐指数
1
解决办法
54
查看次数

标签 统计

stdio ×10

c ×9

file ×2

arrays ×1

c++ ×1

embedded ×1

fflush ×1

floating-point ×1

fopen ×1

getc ×1

glibc ×1

libc ×1

linux ×1

printf ×1

segmentation-fault ×1

time ×1

ungetc ×1