这是一个给定的实验,该实验的目标是使用户的名字,中间名和姓氏全部集中在一个字符串中。然后将字符串分成其他3个字符串,分别保留名字,中间名和姓氏。我必须使用strlen(),strchr()和strcpy()。我知道代码不是最漂亮也不是最好的方法。我的教授希望我们这样做。
#include <string.h>
#include <stdio.h>
#define FU_LIMIT 37
#define FI_LIMIT 13
#define MI_LIMIT 13
#define LA_LIMIT 13
void fill_array(char full_ar[]);
void get_full_name(char full_ar[], char first_ar[]);
void ch_search();
int main(int argc, const char * argv[])
{
char full_ar[FU_LIMIT], first_ar[FI_LIMIT], middle_ar[MI_LIMIT], last_ar[LA_LIMIT];
int start;
get_full_name( full_ar, first_ar);
for (start = 0; start < 1; start++ )
{
printf("First: %s\n", first_ar);
printf("Middle: %s\n", middle_ar);
printf("Last: %s\n", last_ar);
printf("%s\n", full_ar);
}
return 0;
}
void fill_array(char full_ar[]) //passed array and characters to fill with, returns number of writes
{
char start;
for (start = 0; start < 36; start++)
//for loop starts here and performs a test
{
full_ar[start] = 0;
}
}
void get_full_name(char full_ar[], char first_ar[]) //passed array to put name in, returns nothing
{
printf("Please enter your First, Middle, and Last Name:\n");
scanf("%36[^\n]s", full_ar);
for( int i=0 ; i < 37 ; ++i ) full_ar[i] = toupper( full_ar[i] ) ;
}
void ch_search()//passed array to search, char to search for, length of array
{
}
因此,我要问的是使用功能strlen(),strchr()和strcpy()来寻求帮助,以将全名数组分为First,Middle和Last。
最佳答案
我假设您的字符串始终以空格分隔。在循环中(下界= 0,上界= strlen()-1)搜索空格并维护最后一个非空格字符的索引,这样当您找到空格(使用strchr)时,您将有一个开始和结尾在strcpy中使用的索引。