#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 08:07:07 浏览: 95
这段代码是用来计算输入的字符串的长度的,使用了指针来遍历字符串,具体解释如下:
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 * 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函数代替。同时,在实际应用中,还需要考虑一些特殊情况,比如句子中含有标点符号等。
#include <stdio.h> #include <string.h> #include <ctype.h> int main(){ char str[81]; gets(str); for( int i=0; i<strlen(str); i++ ) if( isupper(str[i]) )str[i]='A'+'Z'-str[i]; for( int i=0; i<strlen(str); i++ )printf("%c",str[i]); return 0; }
这是一段 C 语言代码,它的功能是将输入的字符串中的所有大写字母转换成对应的小写字母,所有小写字母转换成对应的大写字母,并输出转换后的字符串。
具体地,该代码首先使用 `gets` 函数读入一个字符串,并存储到字符数组 `str` 中。接着,它使用一个循环遍历整个字符串,判断每个字符是否是大写字母(使用 `isupper` 函数),如果是,则将该字符转换成对应的小写字母(通过将其 ASCII 码值加上 `'a'-'A'`),并存储回原来的位置。
然后,该代码再使用一个循环遍历整个字符串,逐个输出每个字符(使用 `printf` 函数和 `%c` 格式控制符)。最后,程序执行完毕,返回值为 0。
因此,该代码的作用是将输入的字符串中的大小写字母互相转换,并输出转换后的字符串。
阅读全文