Tag: printf

MPI – 按订单打印

我正在尝试在C中编写一个函数,每个处理器都会打印自己的数据。 这是我有的: void print_mesh(int p,int myid,int** U0,int X,int Y){ int i,m,n; for(i=0;i<p;i++){ if(myid==i){ printf("myid=%d\n",myid); for(n=0;n<X;n++){ for(m=0;m<Y;m++){ printf("%d ",U0[n][m]); } printf("\n"); } } else MPI_Barrier(MPI_COMM_WORLD); } } 它由于某种原因不起作用。 arrays全部混合打印。 你有什么见解,为什么这不起作用? 还有其他有用的想法吗? 如果可能,我不想在主进程中发送整个数组。 另外,我不想使用预编译function。

MinGW GCC:“未知的转换类型字符’h’”(snprintf)

好吧,我遇到了一个奇怪的问题,在Windows 7上使用MinGW(GCC 4.6.2)编译C文件。该文件包含以下C代码: #include int main(int argc, char *argv[]) { printf(“%2hhX\n”, 250); char c[80]; snprintf(c, sizeof(c), “%2hhX”, 250); printf(“%s\n”, c); return 0; } 编译结果如下: $ gcc.exe -std=c99 -pedantic -Wall test.c test.c: In function ‘main’: test.c:6:2: warning: unknown conversion type character ‘h’ in format [-Wformat] test.c:6:2: warning: too many arguments for format [-Wformat-extra-args] 现在,对我来说很奇怪的是它抱怨第6行的snprintf调用,而不是第4行的printf调用。我错过了什么或警告是不正确的? 另外,格式字符串”%2hhX”可能有更好的等价物吗? (我正在尝试将char变量打印为hex值。)

执行printf()和分段错误

#include int main() { char *name = “Vikram”; printf(“%s”,name); name[1]=’s’; printf(“%s”,name); return 0; } 终端上没有打印输出,只是出现分段故障。 但是当我在GDB中运行它时,我得到了以下 – Program received signal SIGSEGV, Segmentation fault. 0x0000000000400525 in main () at seg2.c:7 7 name[1]=’s’; (gdb) 这意味着程序在第7行接收SEG错误(显然我不能在常量字符数组上写入)。 那么为什么不执行第6行的printf()?

的好介绍

我想向那些使用混合32/64位构建的printf人推荐使用 。 我尝试了谷歌的介绍或教程页面,其中包含一些示例和使用指南,但我找不到一个。 有人可以推荐的介绍或教程吗?

c stdout打印没有换行?

我想在c中的stdout上打印“CLIENT>”,没有换行。 的printf( “CLIENT>”); 不打印enything。 我该如何解决这个问题? int main (){ printf(“CLIENT>”); }

使用printf()对齐字符串

默认情况下, printf()似乎将字符串对齐到右侧。 printf(“%10s %20s %20s\n”, “col1”, “col2”, “col3”); /* col1 col2 col3 */ 我也可以像这样对齐左边的文字: printf(“%-10s %-20s %-20s”, “col1”, “col2”, “col3”); 有没有快速的方法来中心文本? 或者我是否必须编写一个函数,如果该列的文本宽度为8,则将像test这样的字符串转换为(space)(space)test(space)(space) ?

write()到stdout和printf输出没有交错?

#include #define MAXLEN 256 int main() { int n; char buf[MAXLEN]; while((n = read(0,buf,sizeof(buf))) != 0){ printf(“n: %d:”,n); write(1,buf,n); } return 1; } 程序的输出(第一次read和第一次write由用户键入并由终端回显)是: read read write write n: 5:n: 6: printf的输出在标准输入处按Ctrl + D后出现,而不是随后的读取。 为什么会这样?

‘%d’需要类型为’int’的参数,但参数2的类型为’long unsigned int’

我一直收到编译警告,但我不知道如何解决它: ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long unsigned int’ [ 程序运行正常,但我仍然收到编译警告: /* Sizeof.c–Program to tell byte size of the C variable */ #include int main(void) { printf(“\nA Char is %d bytes”, sizeof( char )); printf(“\nAn int is %d bytes”, sizeof( int )); printf(“\nA short is %d bytes”, sizeof( short […]

使用printf跨平台打印64位整数

在Windows中,它是“%I64d”。 在Linux和Solaris中,它是“%lld”。 如果我想编写跨平台的printfs来打印long long值:这样做的好方法是什么? long long ll; printf(???, ll);

printf中可变大小的填充

有没有办法在printf有一个可变大小的填充? 我有一个整数表示填充有多大: void foo(int paddingSize) { printf(“%…MyText”, paddingSize); } 这应打印出### MyText ,其中paddingSize应决定’#’符号的数量。