c程序的字符串输入参数 我写了一个用标签字符替换空白空间的函数。但当我尝试使用函数实现它时。我不太明白如何调用这个函数。我需要函数 它将用户的字符串作为输入 用tab字符替换空白空间的第二个函数, 函数打印修改后的字符串
我实现了第二个目标:c程序的字符串输入参数 我写了一个用标签字符替换空白空间的函数。但当我尝试使用函数实现它时。我不太明白如何调用这个函数。我需要函数 它将用户的字符串作为输入 用tab字符替换空白空间的第二个函数, 函数打印修改后的字符串,c,C,我实现了第二个目标: void SecondFunction() { char string[]=“我是c新手”; char*p=字符串; 对于(;*p;++p) { 如果(*p=='') *p='\t'; } printf(字符串); } 当我试图调用这个函数时,比如: intmain() { 第二功能(“Hi s”); } 将我的功能更改为: void第二个函数(char*str) { 字符字符串[]=str; char*p=字符串; .... 等 } 我得到以下错误: error:
void SecondFunction()
{
char string[]=“我是c新手”;
char*p=字符串;
对于(;*p;++p)
{
如果(*p=='')
*p='\t';
}
printf(字符串);
}
当我试图调用这个函数时,比如:
intmain()
{
第二功能(“Hi s”);
}
将我的功能更改为:
void第二个函数(char*str)
{
字符字符串[]=str;
char*p=字符串;
....
等
}
我得到以下错误:
error: invalid initializer
char string[] = str;
^
请问,有人能帮我写下我要求的3个函数吗
char userinput[256]; // make it large enough to hold what the user inputs
scanf("%s", userinput); // array decays to pointer so no '&' here
%s
表示正在读取字符串输入。我们还可以使用%d
读取int
,如下所示:
int i;
scanf("%d", &i); // note the address-of operator '&' to get the address of i
printf("The number is: %d", i);
void SecondFunction(char* str)
{
char string[256];
strcpy(string, str);
char *p = string;
for (; *p; ++p)
{
if (*p == ' ')
*p = '\t';
}
printf("%s", string);
}
second函数
几乎正确。要printf
一个C字符串,您需要使用与变量scanf
类似的语法:
printf("%s", string);
类似地,您可以这样打印int i
:
int i;
scanf("%d", &i); // note the address-of operator '&' to get the address of i
printf("The number is: %d", i);
void SecondFunction(char* str)
{
char string[256];
strcpy(string, str);
char *p = string;
for (; *p; ++p)
{
if (*p == ' ')
*p = '\t';
}
printf("%s", string);
}
charstring[]=str
,这是不可能的。无法分配数组,甚至无法复制构造数组
为了以防万一,当您想要复制C字符串时,您需要使用:
总之,你的函数可以是这样的:
int i;
scanf("%d", &i); // note the address-of operator '&' to get the address of i
printf("The number is: %d", i);
void SecondFunction(char* str)
{
char string[256];
strcpy(string, str);
char *p = string;
for (; *p; ++p)
{
if (*p == ' ')
*p = '\t';
}
printf("%s", string);
}
奖励:为什么不能直接写入str
参数
编写此命令时:SecondFunction(“Hi s”)
,字符串“Hi s”
将存储在只读内存段中
如果随后尝试修改SecondFunction
中的参数,则会出现未定义的行为,可能是分段错误char userinput[256]; // make it large enough to hold what the user inputs
scanf("%s", userinput); // array decays to pointer so no '&' here
%s
表示正在读取字符串输入。我们还可以使用%d
读取int
,如下所示:
int i;
scanf("%d", &i); // note the address-of operator '&' to get the address of i
printf("The number is: %d", i);
void SecondFunction(char* str)
{
char string[256];
strcpy(string, str);
char *p = string;
for (; *p; ++p)
{
if (*p == ' ')
*p = '\t';
}
printf("%s", string);
}
second函数
几乎正确。要printf
一个C字符串,您需要使用与变量scanf
类似的语法:
printf("%s", string);
类似地,您可以这样打印int i
:
int i;
scanf("%d", &i); // note the address-of operator '&' to get the address of i
printf("The number is: %d", i);
void SecondFunction(char* str)
{
char string[256];
strcpy(string, str);
char *p = string;
for (; *p; ++p)
{
if (*p == ' ')
*p = '\t';
}
printf("%s", string);
}
charstring[]=str
,这是不可能的。无法分配数组,甚至无法复制构造数组
为了以防万一,当您想要复制C字符串时,您需要使用:
总之,你的函数可以是这样的:
int i;
scanf("%d", &i); // note the address-of operator '&' to get the address of i
printf("The number is: %d", i);
void SecondFunction(char* str)
{
char string[256];
strcpy(string, str);
char *p = string;
for (; *p; ++p)
{
if (*p == ' ')
*p = '\t';
}
printf("%s", string);
}
奖励:为什么不能直接写入str
参数
编写此命令时:SecondFunction(“Hi s”)
,字符串“Hi s”
将存储在只读内存段中
如果随后尝试修改SecondFunction
中的参数,则会出现未定义的行为,可能是分段错误无法分配
字符字符串[]=str你可以做char*string=str代码>但您不需要它。只要做char*p=str代码>。这看起来像的副本。我确实喜欢void SecondFunction(char*str){char*p=str;..bla bla..printf(str);}。它给出的错误是“分段错误(内核转储)”@AjayPhilia您使用的是用户输入字符串,而不是字符串文字。而不是printf(string)
您应该执行printf(“%s”,string)
;如果您的输入值有%
个字符,您的程序将有未定义的行为。您不能分配字符字符串[]=str你可以做char*string=str代码>但您不需要它。只要做char*p=str代码>。这看起来像的副本。我确实喜欢void SecondFunction(char*str){char*p=str;..bla bla..printf(str);}。它给出的错误是“分段错误(内核转储)”@AjayPhilia您使用的是用户输入字符串,而不是字符串文字。而不是printf(string)
您应该执行printf(“%s”,string)
;如果您的输入值有%
个字符,您的程序将有未定义的行为。