这个想法是从offset的值开始修剪字符串,直到size的值,并返回新的字符串返回1;如果它超出代码boundery只是返回0。 这是我的代码:
int subPrint(char *s, int offset,int size){
char *m;
m = (s + offset);
while(size != 0){
m = (m + 1);
if(m == '\0')
return 0;
size--;
}
s = m;
return 1;
}
void subPrintTest(){
char s[20] = "INDUSTRIAL";
subPrint(s,2,4);
printf("%s",s);
}
void main(){
subPrintTest();
getch();
}
问题是它打印原始字符串不变
答案 0 :(得分:0)
您遇到的问题是指针s正在通过值传递给函数subPrint。为了做你想做的事,你可以将指针传递给指针s。
答案 1 :(得分:0)
您可以保留您拥有的代码并将此行s = m
替换为memcpy(destination, src, size_t)
您需要包含string.h
答案 2 :(得分:0)
OP subPrint(char *s, int offset,int size)
更改了代码中的一些变量,但从不影响s
指向的数组,也不会打印任何内容。
subPrint()
不需要。使用"%.*s"
指定精度字段并限制输出的宽度。
char s[20] = "INDUSTRIAL";
int offset = 2;
assert(offset >= 0 && offset <= strlen(s));
int size = 4;
printf("%.*s", 4, s + 2);
或者只是
int subPrintA(char *s, int offset,int size) {
while (offset > 0 && *s) {
offset--;
s++;
}
while (size > 0 && *s) {
putchar(*s);
size--;
s++;
}
}
答案 3 :(得分:0)
问题是你正在操作其他字符串指针并期望原始字符串受到影响。在subPrint
中进行打印,您应该得到所需的结果。
int subPrint(char *s, int offset,int size) {
char *m;
m = (s + offset);
while(size != 0){
if(*m == '\0')
return 0;
putchar(*m); // printing is done here
m = (m + 1);
size--;
}
return 1;
}
void subPrintTest(){
char s[20] = "INDUSTRIAL";
subPrint(s,2,4);
}