相关疑难解决方法(0)

关于C中字符串后面的\ 0字符(或字符?)

\和0字符是否存储在字符串末尾的相同位置或不同位置?

main()
{
    char x[]="Hello\0";
    char y[]="Hello12";
    char z[]="Hello\012";
    char w[]="Hello1234";

    printf("%d %d %d %d", sizeof(x), sizeof(y), sizeof(z), sizeof(w));
}
Run Code Online (Sandbox Code Playgroud)

输出:

7 8 7 10
Run Code Online (Sandbox Code Playgroud)

请解释代码的输出.

c string sizeof

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

输出之间的差异

我对以下代码片段感到困惑,因为对于相同的字符串,输出分别为1和2.

#include<iostream.h>
#include<conio.h>
#include<stdio.h>
#include<string.h>
void main()
{
  char str2[1]="a",str3[]="a";
  printf("%d %d ",sizeof(str2),sizeof(str3));
  getch();
}
Run Code Online (Sandbox Code Playgroud)

c

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

正确扫描和打印size_t变量的方法(与平台无关)

我已经阅读了有关此主题的几篇文章,但是有人说应该完成的方式取决于您所使用的体系结构和系统(Windows / Linux),那么是否有适当的方法可以独立于该平台?

c printf scanf size-t

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

%zd说明符是C11中的可选功能吗?

我使用了一个非常简单的代码:

int main(void)
{
    size_t variable;
    /*prompt*/
    printf("enter the value of the variable: ");
    scanf("%zd", variable);
    printf("you entered %zd value of the variable", variable);
}  
Run Code Online (Sandbox Code Playgroud)

但是,GCC编译器会产生以下结果:

Enter the vale of the size_t variable: 15
You entered zd value of size_t type
Process returned 35 (0X23)  execution time: 3.094s
Press any key to continue
Run Code Online (Sandbox Code Playgroud)

我的书也直接演示了上面的例子,但没有提到它是某种特殊的格式说明符,如果要包含库文件的话.即使是在线编译器也没有产生正确的结果.为什么代码不起作用?

c scanf format-specifiers c11

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

标签 统计

c ×4

scanf ×2

c11 ×1

format-specifiers ×1

printf ×1

size-t ×1

sizeof ×1

string ×1