#include <stdio.h> int slength(const char *s) { int i = 0; while (s[i] != '\0') i++; return i; } int main(int argc, char *argv[]) { const char *q = "how long is this string?"; printf("%s: %d characters\n", q, slength(q)); return 0; }
时间: 2024-01-11 22:05:19 浏览: 23
这是一个 C 语言程序,其中定义了一个函数 `slength`,用于计算字符串的长度。函数的参数是一个指向字符数组的指针 `s`,函数内部使用 `while` 循环遍历字符串,直到遇到字符串结束符 `\0` 为止,统计字符串的长度并返回。程序的主函数定义了一个字符串指针 `q`,并将其赋值为一个字符串常量。然后调用 `slength` 函数计算字符串的长度,并将结果输出到控制台。程序运行结果如下:
```
how long is this string?: 24 characters
```
其中字符串的长度为 24 个字符。
相关问题
#include<stdio.h> #include<string.h> int main() { char str[100]; char *p; p=&str; scanf("%s",&str); while(*p!='\0') {
代码中缺少了结尾的 `}`,补充代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char *p;
p = str;
scanf("%s", str);
while (*p != '\0') {
/*******************************
请在该部分补充缺少的代码
********************************/
printf("%c", *p); // 示例代码:输出每个字符
p++;
}
return 0;
}
```
在缺失的部分中,可以根据题目要求进行相应的处理。例如,题目要求是删除字符串中的非英文字母字符,可以使用判断条件来判断当前字符是否为英文字母,如果是,则进行相应的处理,否则跳过该字符,具体代码如下:
```c
#include <stdio.h>
#include <string.h>
int main() {
char str[100];
char *p;
p = str;
scanf("%s", str);
while (*p != '\0') {
if ((*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z')) {
// 如果是英文字母,则输出
printf("%c", *p);
}
p++;
}
return 0;
}
```
注意,`scanf("%s", &str);` 应该修改为 `scanf("%s", str);`,因为 `str` 已经是指向字符数组的指针,不需要再加取地址符 `&`。
#include<stdio.h> int main() { char *string="I love China!"; printf("%s",*string); return 0; }
这段代码有一个问题,会导致编译错误。在 printf() 函数中,%s 格式说明符需要传入一个字符串指针,而 *string 是一个字符,它只是指向字符串的第一个字符。正确的写法应该是:
```
#include <stdio.h>
int main() {
char *string = "I love China!";
printf("%s", string);
return 0;
}
```
这样就可以输出字符串 "I love China!" 了。