c语言 - 如何复制"casted"字符串中的字符?



我是C语言的新手,我没有走在正确的轨道上。我目前专注于我的 C 编程考试,但我目前不适应内存分配。作为一个新手,我不知道我是否可以解决这个问题,因为我对此一无所知。我故意对名称的大小(只是名字和姓氏,中间有一个空格(和作业的大小设置了限制。另外,请查看分配的内存大小,我不完全确定它是否正确。我举个例子。

编辑修复的主要问题:

不需要转换。 例如字符串[i]=字符。

输入:

1. NAME: Elton Rana
2. JOB: Programmer

输出:

Elton (Programmer) Rana
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main(){
char name[20], job[20];
scanf("%[^n]s",name);
scanf("%s",job);
char space=' ';
char character1='(';
char character2=')';
char* fullname=(char*) malloc((4+strlen(name)+strlen(job)) * sizeof(char));
int savepos;
for(int i=0; i<20; i++){
if((char)name[i]==space){ //position of the space between name and last name
savepos=i;
break;
}
}
int k=0,h=0;
for(int i=0; i<100; i++){
if(i==savepos){
fullname[i]= space; //places a space
i++;
fullname[i]= character1; //places a (
}else if(i==(h+strlen(job)+2)){
fullname[i]= character2; //places a )
i++;
fullname[i]= space; //places a space
}else if(i<(strlen(name)+strlen(job)+2) && i>savepos+1){
fullname[i]= job[k];  //places the job's name between ()
k++;
}else{
fullname[i]=name[h]; //places the name
h++;
if(name[h]==''){
fullname[i]='';
break;
}
}
}
printf("%sn",fullname);
free(fullname);
}

你不需要任何这些强制转换来字符。

此外,无论如何,您确实无法将表达式转换为普通旧值(非指针(类型的左侧。这是一个编译器错误。

取而代之的是:

(char) fullname[i]= space; //places a space

这就足够了:

fullname[i]= space; //places a space

同样地:

(char) fullname[i]= (char) name[h];

可以只是这个:

fullname[i]= name[h];

伙计!

在我看来,我建议您用strtok()来参考sprintf()

如果您需要更具体的帮助,请给我留言:D


当您使用sprintf()时,您可以在所需的位置打印内容。

例如,printf()sprintf(stdout, "Hello worldn")

在这种情况下,我们将stdout称为流。

(不用担心,当时间流逝时,你会自己理解stream(

因此,您可以轻松地用spirntf()填充字符数组

sprintf(fullname, "%s (%s)%s", lastName, job, firstName)

就像,"嘿,printf("%s (%s)%sn", lastName, job, firstName)fullname">

我们如何才能使name变得lastNamefirstName

在这种情况下,我们可以使用strtok()

char *lastName = strtok(name, " ");
char *firstName = strtok(NULL, " ");

最后,它会是这样的。

#include <stdio.h>
#include <string.h>
int main()
{
char name[20];
char job[20];
scanf("%[^n]s", name);
scanf("%s", job);
char allocatedBuffer[100];  
char *lastName = strtok(name, " ");
char *firstName = strtok(NULL, " ");
sprintf(allocatedBuffer, "%s (%s)%s", lastName, job, firstName);    
printf("%sn", allocatedBuffer);
return 0;
}

相关内容

  • 没有找到相关文章

最新更新