#include <iostream>
#include <string.h>
using namespace std;
int main()
{
char firstname[] = "Alfred";
char middlename [] = "E";
char lastname[] = "Neuman";
char fullname [80];
int offset=0;
strcpy(fullname,firstname);
offset = strlen(firstname);
strcpy(fullname+offset," ");
offset +=1;
strcpy(fullname+offset,middlename);
offset += strlen(middlename);
strcpy(fullname+offset," . ");
offset +=2;
strcpy(fullname+offset,lastame);
cout << firstname << "." << middlename << "." << lastname << endl;
cout << "Fullname:" << fullname << endl;
return 0;
}
为什么需要偏移量,为什么当我们处理文本时,偏移集加1和2。我似乎无法掌握字符串和数组,任何人都在心里帮忙吗?
答案 0 :(得分:3)
那是因为你使用了错误的工具。
std::string firstname = "Alfred";
std::string middlename = "E";
std::string lastname = "Numan";
std::string fullname = firstname + " " + middlename + " . " + lastname;
偏移量用于跟踪数组中字符串的当前位置,以便您可以将新参数strcpy
放到正确的位置。
答案 1 :(得分:0)
您将分隔符(空格)的长度添加到偏移量,以便在正确的位置写下名称的下一部分。
答案 2 :(得分:0)
“offset”用于将复制操作的起点移动到数组中最后一个字符后的第一个字符。随着更多字符被复制到fullname,offset会增加到指向fullname数组中剩余未使用空间的第一个字符。
答案 3 :(得分:0)
strcpy(fullname,firstname);
将firstname复制到fullname缓冲区。
offset = strlen(firstname);
将偏移量设置为等于firstname的长度,以便知道将下一个内容复制到fullname缓冲区的位置,在本例中为空格字符。
offset +=1;
移动你的偏移量通过该字符,这样就可以从那一点开始复制到fullname缓冲区。
strcpy(fullname+offset,middlename);
将中间名复制到fullname缓冲区。
offset += strlen(middlename);
再次将中间名的长度添加到偏移量,以便在此之后立即开始下一个复制操作。
strcpy(fullname+offset," . ");
复制'。'中间的初始。
offset +=2;
将你的偏移量增加到右边通过那个。
strcpy(fullname+offset,lastame);
复制姓氏。
答案 4 :(得分:0)
了解这两个陈述,然后是铅笔练习。
arrayVariable + integer
是integer + 1
序列中arrayVariable
位置的索引。因此,arr+3
是序列中的位置4。 (因为数组索引从0开始。)