Arrays 我能';我找不到为什么我的C代码没有编译而另一个正在运行这两种代码几乎是一样的
我不明白为什么一个代码不起作用。我对它做了一些修改,但现在我不明白问题出在哪里。请帮忙 这一个没有运行:Arrays 我能';我找不到为什么我的C代码没有编译而另一个正在运行这两种代码几乎是一样的,arrays,string,pointers,Arrays,String,Pointers,我不明白为什么一个代码不起作用。我对它做了一些修改,但现在我不明白问题出在哪里。请帮忙 这一个没有运行: #include<stdio.h> main() { char *name; int length; char *cptr = name; //this line is different name = "DELHI"; //This line is different prin
#include<stdio.h>
main()
{
char *name;
int length;
char *cptr = name; //this line is different
name = "DELHI"; //This line is different
printf ("%s\n", name);
while(*cptr != '\0')
{
printf("%c is stored at address %u\n", *cptr, cptr);
cptr++;
}
length = cptr - name;
printf("\nLength of the string = %d\n", length);
}
#include<stdio.h>
main() {
char *name;
int length;
char *cptr;
name = ("DELHI");
printf("%s\n",&name);
cptr = name;
while (*cptr != '\0')
{
printf("%c is stored at address %u\n", *cptr, cptr);
cptr++;
}
length = cptr-name;
printf("\nLength of String = %d\n", length);
}
#包括
main()
{
字符*名称;
整数长度;
char*cptr=name;//此行不同
name=“德里”//这行不同
printf(“%s\n”,名称);
而(*cptr!='\0')
{
printf(“%c存储在地址%u\n”,*cptr,cptr);
cptr++;
}
长度=cptr-名称;
printf(“\n字符串长度=%d\n”,长度);
}
这个正在运行:
#include<stdio.h>
main()
{
char *name;
int length;
char *cptr = name; //this line is different
name = "DELHI"; //This line is different
printf ("%s\n", name);
while(*cptr != '\0')
{
printf("%c is stored at address %u\n", *cptr, cptr);
cptr++;
}
length = cptr - name;
printf("\nLength of the string = %d\n", length);
}
#include<stdio.h>
main() {
char *name;
int length;
char *cptr;
name = ("DELHI");
printf("%s\n",&name);
cptr = name;
while (*cptr != '\0')
{
printf("%c is stored at address %u\n", *cptr, cptr);
cptr++;
}
length = cptr-name;
printf("\nLength of String = %d\n", length);
}
#包括
main(){
字符*名称;
整数长度;
char*cptr;
名称=(“德里”);
printf(“%s\n”,&name);
cptr=名称;
而(*cptr!='\0')
{
printf(“%c存储在地址%u\n”,*cptr,cptr);
cptr++;
}
长度=cptr名称;
printf(“\n字符串长度=%d\n”,长度);
}
在您的第一个程序中:
char *name;
int length;
char *cptr = name; //this line is different
这里,name
是未初始化的,您可以将未初始化的值复制到cptr
中。这会导致未定义的行为(以及后面实际使用cptr
)
在第二个程序中:
char *cptr;
name = ("DELHI");
printf("%s\n",&name);
cptr = name;
name
已初始化,因此当您将该值复制到cptr
中时,一切正常。不幸的是,这里的printf
行是错误的-我不确定你的程序是如何工作的;也许只是走运而已。你想要:
printf("%s\n", name);
在循环中打印cptr
的值时,两个程序都会导致未定义的行为。更正该print语句以使用指针值的匹配格式说明符:
printf("%c is stored at address %p\n", *cptr, (void *)cptr);
请正确格式化您的代码;这将更容易提供帮助。如果代码示例不是编译的,那么提供编译器错误和代码示例是公平的。此外,编译器通常非常擅长告诉您出了什么问题。例如,我告诉我,您声明
main
错误(应返回int),将常量char*分配给char*,(可写字符串),并且在本应使用%p
时使用了%u
格式说明符。很抱歉,我是新来的,不知道