标签: printf

C:printf没有执行,可能的编译器优化?

我的代码中有以下行:

1 || printf("A");
Run Code Online (Sandbox Code Playgroud)

我很惊讶地看到A没有打印; 我猜这是由于编译器优化:1被评估为,并且,因为整个OR表达式必须是真的,printf("A")甚至没有评估...有人可以证实这一点吗?使用不同的编译器,程序会表现得像这样吗?

c printf compiler-optimization

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

如何在终端中打印制表符分隔文件

我将excel数据导出到制表符分隔的txt文件中但是我很难在终端中打印它,这里是文件:

heading1    heading2    heading3    heading4    heading5    heading6    heading7  
col1row1    col2row1    col3row1    col4row1    col5row1    col6row1    col7row1  
col1row2    col2row2    col3row2    col4row2    col5row2    col6row2    col7row2  
col1row3    col2row3    col3row3    col4row3    col5row3    col6row3    
col1row4    col2row4    col3row4    col4row4                        
Run Code Online (Sandbox Code Playgroud)

您可以在此处下载文本文件.

我尝试用sed和awk.

update1:​​我在bsd(mac)上,cat file.txt以丑陋的格式打印,不可读,我有一个需要输入标签的bash脚本,所以我先打印标签,然后从打印列表中选择正确的标签

bash awk printf line-endings

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

getche函数中的运行时错误

我正在尝试获取数组中某些字符的位置.我在下面使用此代码,但在我输入两个字符后,我遇到了运行时错误.

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

int main()

{   
  char board [8][8]={{0}};

  char kr,kc,qr,qc,nr,nc;
  unsigned char i,j;


  for (i = 0; i < 8 ;i++)
  {
    for (j = 'A'; j <= 'H'; j++)
    {
      board[i][j] = getche();
    }
  }

  for (i = 0; i < 8 ;i++)
  {
    for (j = 0; j < 9; j++)
    {
      if (board[i][j] == 'K')
      {
        kr = i;
        kc = j;
      }
      else if (board[i][j] == 'Q')
      {
        qr = i; …
Run Code Online (Sandbox Code Playgroud)

c printf runtime-error runtime char

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

awk - 使用printf只格式化一个输出字段?

一个非常基本的查询,但我无法解决.我是一个非常基本的awk用户.

我希望将一个文件(不超过100条记录)写入awk,并通过在每行的开头添加一个行号(0填充)来输出修改的文件.

因此,输入文件:

Lorem ipsum dolor sit amet consectetur adipiscing elit
sed do eiusmod tempor incididunt ut labore et

dolore magna aliqua Ut enim ad minim veniam
...
Run Code Online (Sandbox Code Playgroud)

输出文件:

001 Lorem ipsum dolor sit amet consectetur adipiscing elit
002 sed do eiusmod tempor incididunt ut labore et
003
004 dolore magna aliqua Ut enim ad minim veniam
...
Run Code Online (Sandbox Code Playgroud)

我的小一号班轮来做行编号(相当明显)

awk '{print NR, $0}' *infile*
Run Code Online (Sandbox Code Playgroud)

我得到了

1 Lorem ipsum dolor sit amet consectetur adipiscing elit …
Run Code Online (Sandbox Code Playgroud)

linux bash awk printf

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

printf末尾不需要的字符

我写了一个小程序,它接受一个字符串输入,并输出字符串,每个字符数向上移动3.只有问题是在每个字符串的末尾打印一个%字符.

#include <iostream>
#include <stdio.h>
#include <string>

int main()
{
    std::cout << "Input message: " << std::endl;
    std::string mes;
    std::cin >> mes;
    for(char& c : mes)
    {
        printf ("%c", c+3);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是程序的使用和输出:

Input message:
hi
kl% 
Run Code Online (Sandbox Code Playgroud)

c++ string printf

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

printf编译但不会打印任何内容

#include <stdio.h>

int tempconvert(int, int, int);

int main(void) {
    float fahr, celsius;
    int lower, upper, step;

    lower = 0;
    upper = 300;
    step = 20;

    int tempconvert(lower, upper, step)
    {
        fahr = lower;
        while (fahr <= upper) {
            celsius = (5.0/9.0) * (fahr-32.0);
            printf("%3.0f %6.1f\n", fahr, celsius);
            fahr = fahr + step;
        }
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这里有关于C编程书示例的新增内容.试图运行此代码,并编译,但printf拒绝实际打印任何东西.我可以使用这本书的例子继续前进,但我不知道为什么我的代码不能正常工作.

对这里我可能缺少的任何帮助或见解都会很精彩.

c printf

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

C中几乎相同程序的不同输出

样本1:

char a []={'h','i'};
int i;
for(i=0;a[i]!='\0';i++){
printf("%c",a[i]);
}
printf("%s",a);
Run Code Online (Sandbox Code Playgroud)

输出:hi☻hi♥

样本2:

char a []={'h','i'};
int i;
for(i=0;a[i]!='\0';i++){
    char l = a[i];
    printf("%c",a[i]);
}
printf("%s",a);
Run Code Online (Sandbox Code Playgroud)

输出:HII♥喜♥♦

样本3:

char a [5]={'h','i'};
int i;
for(i=0;a[i]!='\0';i++){
printf("%c",a[i]);
}
printf("%s",a);
Run Code Online (Sandbox Code Playgroud)

输出:hihi

为什么这三个程序的输出不同?

样品1和样品2几乎是类似的代码,除了额外的线char l = a[i],样品3与样品1和2的不同,基于阵列大小的声明.

c arrays string printf char

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

free()抱怨无效指针

我试图通过连接一些值来逐个构建一个字符串,以获得类似的东西:

|0x0F64:0x0063:0x1A|0x7CC4:0x0073:0x1A|0x0A51:0xA29A:0x9C|0xD49D:0x0058:0x10|
Run Code Online (Sandbox Code Playgroud)

我想使用动态变量,因为NB_ELEMENT可能会得到改进.

#include <stdio.h>
#include <stdlib.h>

#define NB_ELEMENT 4
typedef struct
{
   unsigned short  u16Val1;
   unsigned short  u16Val2;
   unsigned char   u8Val3;
}stElement;

stElement element[NB_ELEMENT] = {{ 0 }};

int main()
{
    element[0].u16Val1 = 3940;
    element[0].u16Val2 = 99;
    element[0].u8Val3 = 26; 

    element[1].u16Val1 = 31940;
    element[1].u16Val2 = 115;
    element[2].u8Val3 = 26;           

    element[2].u16Val1 = 2641;
    element[2].u16Val2 = 41620;
    element[2].u8Val3 = 156; 

    element[3].u16Val1 = 52429;
    element[3].u16Val2 = 88;
    element[3].u8Val3 = 16;

    char *str = malloc(NB_ELEMENT * sizeof element);

    snprintf(str, sizeof element, "|0x%04x:0x%04x:0x%x\n",element[0].u16Val1,
                                                      element[0].u16Val2, …
Run Code Online (Sandbox Code Playgroud)

c string printf concatenation

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

在C wierd输出中写入和读取CSV文件

我是C语言的新手,我正在尝试将数据保存到.csv并在一个非常简单的程序中读取相同的数据.

    char c;

    FILE *fp;
    fp = fopen("file.csv", "w+");
    fprintf(fp, "Hello;World\nLine");
    fclose(fp);
    fp = fopen("file.csv", "r");
    while (getc(fp) != EOF) {
        printf("%c", getc(fp));
    }

    fclose(fp);
Run Code Online (Sandbox Code Playgroud)

我不知道为什么输出错了:

el;ol
ie
Run Code Online (Sandbox Code Playgroud)

提前致谢

c csv printf

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

printf with arguments函数返回指向char的指针

嗨,我试着设置一个类似的代码

#include <stdio.h>

struct _data;
typedef struct _data data;
typedef struct _data {
    double x;
    double y;
} data;

const char* data_tostring(data* a) {
    static char buffer[255];
    sprintf(buffer, "%f %f", a->x, a->y);
    return buffer;
}

int main(){
    data a;
    data b;
    a.x = 0;
    a.y = 0;
    b.x = 1;
    b.y = 1;
    printf("%s %s \n", data_tostring(&a), data_tostring(&b));
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期望输出为0 0 1 1,但实际上我得到0 0 0 0.我是否错误地使用static关键字和返回值data_tostring()

谢谢您的帮助.

c printf

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