#include <stdio.h> int main() { char str[50],*p=str; int i=0; gets(p); for(i=0;*p!='\0';i++) p++; printf("Length of the string is %d\n",i); return 0; }
时间: 2023-06-16 09:07:07 浏览: 70
这段代码是用来计算输入的字符串的长度的,使用了指针来遍历字符串,具体解释如下:
1. `char str[50],*p=str;` 定义了一个字符数组 `str` 和一个指针 `p`,并且将指针指向 `str` 数组的首地址。
2. `gets(p);` 从标准输入中读取一行字符串,存储到 `str` 数组中。
3. `for(i=0;*p!='\0';i++) p++;` 用指针 `p` 遍历字符串,每遍历一次,计数器 `i` 加一,直到遍历到字符串的结尾符 `\0`。
4. `printf("Length of the string is %d\n",i);` 输出字符串的长度。
5. `return 0;` 返回程序执行成功的标志。
需要注意的是,`gets()` 函数已经被标记为不安全的函数,不建议使用。应该使用 `fgets()` 函数来代替。
相关问题
#include <stdio.h> int main(){ char *str = NULL; gets(str); printf("%s\n", str); return 0; }
这段代码中存在一些问题,首先,`gets()`函数不会检查输入字符串的长度,如果输入字符串的长度超过了`str`指向的内存空间的大小,就会导致缓冲区溢出漏洞,从而可能导致程序崩溃或被攻击者利用。其次,`str`指针没有被初始化,它指向的是一个未知的内存地址,可能会导致不可预知的结果。建议使用`fgets()`函数代替`gets()`函数,并为`str`指针分配足够的内存空间,或者使用动态内存分配函数`malloc()`来动态分配内存空间。例如:
```
#include <stdio.h>
#include <stdlib.h>
#define MAX_LEN 100
int main(){
char *str = (char*)malloc(MAX_LEN*sizeof(char)); // 动态分配100个字节的内存空间
fgets(str, MAX_LEN, stdin); // 读取用户输入的字符串
printf("%s\n", str);
free(str); // 释放内存空间
return 0;
}
```
句子逆序#include<stdio.h> int main() { char * gets(char * str); /*********Begin*********/ 在这完成代码 /*********End**********/ return 0; }
你好,如果你的目的是将一个句子中的单词逆序输出,可以使用以下代码实现:
#include <stdio.h>
#include <string.h>
void reverse(char *start, char *end) { // 定义逆序函数
while (start < end) {
char temp = *start;
*start++ = *end;
*end-- = temp;
}
}
int main() {
char sentence[1000];
printf("请输入一个句子:");
gets(sentence); // 使用gets函数读入一个字符串
reverse(sentence, sentence + strlen(sentence) - 1); // 整体逆序
char *start = sentence;
while (*start) { // 逐个单词逆序输出
char *end = start;
while (*end && *end != ' ') end++;
reverse(start, end - 1);
start = (*end) ? (end + 1) : end;
}
printf("%s\n", sentence); // 输出结果
return 0;
}
运行程序后,输入一个句子即可得到逆序后的结果。需要注意的是,由于gets函数存在安全性问题,建议使用fgets函数代替。同时,在实际应用中,还需要考虑一些特殊情况,比如句子中含有标点符号等。
相关推荐
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)