函数strcpy和strcmp的参数传递问题
编译可通过。但是运行时出现shell command killed by signal Segmentation fault。请问,跟strcpy1和strcmp1这两个函数相关的参数传递方面,错在哪了?先谢谢各位了!
#include <iostream>
#include <string.h>
#include "exercise6_10.h"
#include <cstddef>
#include <assert.h>
using namespace std;
std::size_t strlen1(char const *s) {
assert(s);
std::size_t len = 0;
while (s[len])
++len;
return len;
}
void strcpy1(char *d, char const *s) {
assert(s && d);
do {
*d++ = *s;
} while (*s++);
}
enum CStringOrder {
FirstBeforeSecond = -1, Same = 0, SecondBeforeFirst = 1
};
CStringOrder strcmp1(char const *first, char const *second) {
assert(first && second);
/*unsigned char const *f
= static_cast<unsigned char const*>(first);
unsigned char const *s
= static_cast<unsigned char const*>(second);*/
char *f;
*f = *first;
char *s;
*s = *second;
do {
if ((*f)<(*s))
return FirstBeforeSecond;
else
if ((*s)<(*f))
return SecondBeforeFirst;
} while (*(s++) && *(f++));
assert((*(s-1)==0) && (*(f-1)==0));
return Same;
}
int main()
{
char const *s = "painting";
char *d;
char const *first = "abcdef";
char const *second = "abcdef";
std::cout<<"strlen:"<<strlen1(s)<<"\n";
strcpy1(d,s);
std::cout<<"strcpy:"<<*d<<"\n";
std::cout<<"strcmp:"<<strcmp1(first,second)<<"\n";
}