我想如果有人能在我正在进行的当前项目中帮助我,我会更好地理解这个概念。我想使用 C 使用指针编辑特定内存地址的数据。具体来说,我有两个字符数组(字符串),我既需要从特定位置读取数据,也需要在特定位置写入数据。
我主要对指针的语法感到困惑,例如*
and->
和&
。
据我了解,*
指的是保存在指针当前内存地址的数据。因此,例如,如果我想编辑 a 的起始内存地址处的数据char *p
,我会执行以下操作: (*p) = 'c';
现在,如果我想从开头更改第二个内存地址的字符怎么办p
?
另外,我理解是&
指指针的位置。但我不知道如何使用这种语法。
这是我的例子:
int orig_length = strlen(original_string); //-1 for \0?
char *poriginal, *pnew_string;
poriginal = &original_string;
while(orig_length>0) {
k = 0;
j = 0;
while(isalpha(*(poriginal+j))) {
j++;
k++;
}
while(k > 0) {
*(pnew_string+(j-k)) = toupper(*(poriginal+k-1)); //toupper
k--;
}
if(*(poriginal+(j)) == '_') {
*(pnew_string+(j)) = ' ';
}
else {
*(pnew_string+(j)) = *(poriginal+(j));
}
orig_length = orig_length - j;
}
*(pnew_string+strlen(pnew_string)) = '\0'; //Syn? Is this actually necessary?
... //program continues...
顺便说一句,这个程序是用来接收一个字符串“now_i_understand!”的。并反转每个单词,将每个单词大写,将 _ 切换为 ' ',并保留其他标点符号:“WON I DNATSREDNU!”