C等效函数
C equivalent function
我正在执行转换任务
void f(char s[], char t[]){
int k=0;
while (s[k]=t[k]) k++;
}
转换为
的等效形式
void f(char *s, char *t)
{
while (____);
}
我知道可以转换成
void f(char *s, char *t){
int k=0;
while (*(s+k)=*(t+k))k++;
}
问题是,只允许填写括号。我运行没主意
简单地增加指针本身。
void f(char *dest, char *source) {
while ((*dest++ = *source++));
}
这将在分配的字符为 NUL ('[=12=]'
) 时结束循环。
示例程序,类型限定符正确性:
#include <stdio.h>
void f(char *dest, const char *source) {
while ((*dest++ = *source++));
}
int main(void) {
char buffer[32];
const char *string = "Hello, world!";
f(buffer, string);
puts(buffer);
}
当然,这与标准库strcpy
有相同的问题,您必须小心确保在之前[=]目标缓冲区中有足够的space 24=]调用这个函数。
void f(char *s, char *t)
{
while (*s++ = *t++);
}
我正在执行转换任务
void f(char s[], char t[]){
int k=0;
while (s[k]=t[k]) k++;
}
转换为
的等效形式void f(char *s, char *t)
{
while (____);
}
我知道可以转换成
void f(char *s, char *t){
int k=0;
while (*(s+k)=*(t+k))k++;
}
问题是,只允许填写括号。我运行没主意
简单地增加指针本身。
void f(char *dest, char *source) {
while ((*dest++ = *source++));
}
这将在分配的字符为 NUL ('[=12=]'
) 时结束循环。
示例程序,类型限定符正确性:
#include <stdio.h>
void f(char *dest, const char *source) {
while ((*dest++ = *source++));
}
int main(void) {
char buffer[32];
const char *string = "Hello, world!";
f(buffer, string);
puts(buffer);
}
当然,这与标准库strcpy
有相同的问题,您必须小心确保在之前[=]目标缓冲区中有足够的space 24=]调用这个函数。
void f(char *s, char *t)
{
while (*s++ = *t++);
}