编辑:我添加了示例的源代码.
我遇到了这个例子:
char source[MAX] = "123456789";
char source1[MAX] = "123456789";
char destination[MAX] = "abcdefg";
char destination1[MAX] = "abcdefg";
char *return_string;
int index = 5;
/* This is how strcpy works */
printf("destination is originally = '%s'\n", destination);
return_string = strcpy(destination, source);
printf("after strcpy, dest becomes '%s'\n\n", destination);
/* This is how strncpy works */
printf( "destination1 is originally = '%s'\n", destination1 );
return_string = strncpy( destination1, source1, index );
printf( "After strncpy, destination1 becomes '%s'\n", destination1 );
Run Code Online (Sandbox Code Playgroud)
哪个产生了这个输出: …
我想知道为什么第一个语句有效,为什么不用c ++中的第二个语句
char a[10]="iqbal"; // it works
a="iqbal"; // does not work
Run Code Online (Sandbox Code Playgroud) 我刚开始学习C并发现了一些关于字符串指针和字符串(char数组)的混淆.任何人都可以帮我清醒一下吗?
// source code
char name[10] = "Apple";
char *name2 = "Orange";
printf("the address of name: %p\n", name);
printf("the address of the first letter of name: %p\n", &(*name));
printf("first letter of name using pointer way: %c\n", *name);
printf("first letter of name using array way: %c\n", name[0]);
printf("---------------------------------------------\n");
printf("the address of name2: %p\n", name2);
printf("the address of the first letter of name2: %p\n", &(*name2));
printf("first letter of name2 using pointer way: %c\n", *name2);
printf("first letter of name2 using array way: %c\n", …Run Code Online (Sandbox Code Playgroud) 为什么下面的代码是非法的?
typedef struct{
char a[6];
} point;
int main()
{
point p;
p.a = "onetwo";
}
Run Code Online (Sandbox Code Playgroud)
它与文字的大小有什么关系吗?或者在声明后将字符串文字分配给char数组是否违法?
我正在尝试使用字符文字初始化后编辑字符串,如下所示:
int main() {
char str1[10] = "hello";
str1[0] = "b";
printf("%s\n", str1);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
结果是"dello",即"d"而不是"b".同样,下面只是废话.
int main() {
char str1[10];
str1[0] = "h";
str1[1] = "e";
str1[2] = "l";
str1[3] = "l";
str1[4] = "o";
printf("%s\n", str1);
}
Run Code Online (Sandbox Code Playgroud)
我发现一个StackOverflow 帖子提到这应该导致段错误或访问冲突错误,但它并没有真正解释原因.
我试图在gregorian日历上创建一个程序,但是当我尝试在if else块中分配月份名称以及切换大小写时,codeblocks在运行时停止响应.
int main()
{
int month,year;
scanf("%d %d",&month,&year);
char month1[10];
if(month==1)
month1[10]="January";
else if(month==2)
month1[10]="February";
else if(month==3)
month1[10]="March";
else if(month==4)
month1[10]="April";
else if(month==5)
month1[10]="May";
else if(month==6)
month1[10]="June";
else if(month==7)
month1[10]="July";
else if(month==8)
month1[10]="August";
else if(month==9)
month1[10]="September";
else if(month==10)
month1[10]="October";
else if(month==11)
month1[10]="November";
else if(month==12)
month1[10]="December";
printf("%s %d",month1,year);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
类似地,当我习惯在switch case中分配字符串值时,也发生了运行时错误
main()
{
int month,year;
scanf("%d %d",&month,&year);
char month1[15];
switch(month)
{
case 1:
month1[15]="January";
break;
case 2:
month1[15]="February";
break;
case 3:
month1[15]="March";
break;
case 4:
month1[15]="April";
break;
case …Run Code Online (Sandbox Code Playgroud)