编写一个程序,使用指针来查找字符串的长度。 点击复制后,将打开C知道体验页
时间: 2024-05-01 08:17:49 浏览: 16
好的,我知道了。这个问题的答案是:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
printf("请输入一个字符串:");
scanf("%s", str);
char *p = str; // 用指针指向字符串的第一个字符
int len = 0; // 初始化字符串长度为0
while (*p != '\0') { // 当指针指向的字符不是结束符时
len++; // 字符串长度加1
p++; // 指针后移1位
}
printf("字符串的长度为:%d\n", len);
return 0;
}
```
这个程序利用指针来遍历字符串,每遇到一个非结束符的字符,就将计数器加1,最后输出统计结果。
相关问题
C语言指针编写一个函数实现从源字符串中查找目标字符串,并进行替换。
以下是一个示例代码,实现从源字符串中查找目标字符串,并进行替换。
```c
#include <stdio.h>
#include <string.h>
// 函数声明
char* replace(char* src, const char* target, const char* replacement);
int main() {
char src[100] = "Hello, World! This is a sample string.";
const char* target = "sample";
const char* replacement = "replacement";
char* result = replace(src, target, replacement);
printf("Original string: %s\n", src);
printf("Replaced string: %s\n", result);
// 释放内存
free(result);
return 0;
}
char* replace(char* src, const char* target, const char* replacement) {
int target_len = strlen(target);
int replacement_len = strlen(replacement);
char* p = src;
while ((p = strstr(p, target)) != NULL) {
// 计算需要移动的字节数
int move_len = strlen(p + target_len) + 1;
// 如果目标字符串和替换字符串长度不同,需要移动后面的字符
if (target_len != replacement_len) {
memmove(p + replacement_len, p + target_len, move_len);
}
// 替换目标字符串
memcpy(p, replacement, replacement_len);
// 继续查找下一个目标字符串
p += replacement_len;
}
return src;
}
```
该函数会在源字符串中查找目标字符串,如果找到,则用替换字符串替换目标字符串。如果需要替换的字符串的长度和目标字符串的长度不同,则需要先把后面的字符进行移动,再进行替换。该函数返回替换后的源字符串。
编写c语言程序:编写一个两数实现从源字符串中查找目标字符串,并进行替换
以下是一个简单的 C 语言程序,可以实现从源字符串中查找目标字符串并进行替换:
```c
#include <stdio.h>
#include <string.h>
void replace(char *src, char *target, char *replacement) {
int i, j, k;
int src_len = strlen(src);
int target_len = strlen(target);
int replacement_len = strlen(replacement);
char new_str[1000];
for (i = 0, j = 0; i < src_len; ) {
if (strncmp(&src[i], target, target_len) == 0) {
for (k = 0; k < replacement_len; k++) {
new_str[j++] = replacement[k];
}
i += target_len;
} else {
new_str[j++] = src[i++];
}
}
new_str[j] = '\0';
strcpy(src, new_str);
}
int main() {
char src[1000];
char target[100];
char replacement[100];
printf("请输入源字符串:");
fgets(src, 1000, stdin);
src[strlen(src)-1] = '\0';
printf("请输入目标字符串:");
fgets(target, 100, stdin);
target[strlen(target)-1] = '\0';
printf("请输入替换字符串:");
fgets(replacement, 100, stdin);
replacement[strlen(replacement)-1] = '\0';
replace(src, target, replacement);
printf("替换后的字符串为:%s\n", src);
return 0;
}
```
这个程序首先定义了一个函数 `replace`,它接受三个参数:源字符串、目标字符串和替换字符串。该函数使用循环遍历源字符串,如果发现当前位置匹配了目标字符串,则将替换字符串复制到新的字符串中,并将源字符串的指针向前移动目标字符串的长度。否则,将源字符串的当前字符复制到新的字符串中,并将源字符串的指针向前移动一个字符。最后,将新的字符串复制回源字符串。
在 `main` 函数中,我们首先输入源字符串、目标字符串和替换字符串,然后调用 `replace` 函数进行替换,并输出替换后的字符串。
注意,这个程序假定源字符串、目标字符串和替换字符串的长度不超过 100 字符。如果需要处理更长的字符串,可以增加数组的长度。