使用指针算法对字符串长度函数进行编码
Coding a string length function using pointer arithmetic
我是 CS 初学者 class 学习 C,我们的任务是编写一个函数来仅使用字符串指针来查找字符串长度。我有以下代码:
#include <stdio.h>
int strlength(char* str);
int main() {
char *str;
int comp;
printf("Please enter the string: ");
scanf("%s", str);
printf("The length of the string is: %d\n", strlength(str));
return 0;
}
int strlength(char *str) {
int length = 0;
while(*str != '[=10=]') {
length++;
str++;
}
return length;
}
我不太确定哪里出现了分段错误。我已经尝试在 strlength 函数中创建第二个指针,该指针等于 str 并递增它,但这也给了我一个分段错误。任何见解将不胜感激!
char *str;
int comp;
printf("Please enter the string: ");
scanf("%s", str);
您应该在 scanf 之前为 *str
在堆中分配内存(使用 malloc)。如果您不想使用 malloc 将其更改为 char[number] 以便它可以在堆栈而不是堆中分配内存
我是 CS 初学者 class 学习 C,我们的任务是编写一个函数来仅使用字符串指针来查找字符串长度。我有以下代码:
#include <stdio.h>
int strlength(char* str);
int main() {
char *str;
int comp;
printf("Please enter the string: ");
scanf("%s", str);
printf("The length of the string is: %d\n", strlength(str));
return 0;
}
int strlength(char *str) {
int length = 0;
while(*str != '[=10=]') {
length++;
str++;
}
return length;
}
我不太确定哪里出现了分段错误。我已经尝试在 strlength 函数中创建第二个指针,该指针等于 str 并递增它,但这也给了我一个分段错误。任何见解将不胜感激!
char *str;
int comp;
printf("Please enter the string: ");
scanf("%s", str);
您应该在 scanf 之前为 *str
在堆中分配内存(使用 malloc)。如果您不想使用 malloc 将其更改为 char[number] 以便它可以在堆栈而不是堆中分配内存