pstr_scan要从标准输入读入一个字符串,读到空格类字符为止。空格类字符包括空格、Tab和回车换行。str是要填的P字符串数组,size是这个数组的大小。函数返回读到的字符串的长度。
时间: 2024-04-10 21:34:25 浏览: 101
您可以使用以下代码来实现pstr_scan函数:
```c
#include <stdio.h>
int pstr_scan(char *str, int size) {
int i;
char ch;
for (i = 0; i < size-1; i++) {
ch = getchar();
if (ch == ' ' || ch == '\t' || ch == '\n' || ch == '\r') {
break;
}
str[i] = ch;
}
str[i] = '\0';
return i;
}
int main() {
char str[100];
int length;
printf("Enter a string: ");
length = pstr_scan(str, sizeof(str));
printf("String: %s\n", str);
printf("Length: %d\n", length);
return 0;
}
```
这个代码中的pstr_scan函数会从标准输入读取字符,直到遇到空格、制表符或换行符为止。它将读取的字符存储在str数组中,并返回读取的字符串的长度。在主函数中,您可以测试该函数。
相关问题
在主函数中输入5个字符串,利用指针方法,在另一两数中从 大到小排序,最后再主函数中输出。
好的,我可以帮你解决这个问题。下面是一个示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
void sort(string* pstr1, string* pstr2) {
if (*pstr1 < *pstr2) {
string temp = *pstr1;
*pstr1 = *pstr2;
*pstr2 = temp;
}
}
int main() {
const int n = 5;
string strs[n];
// 输入5个字符串
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "个字符串:";
cin >> strs[i];
}
// 从大到小排序
for (int i = 0; i < n-1; i++) {
for (int j = i+1; j < n; j++) {
sort(&strs[i], &strs[j]);
}
}
// 输出结果
cout << "排序后的结果为:" << endl;
for (int i = 0; i < n; i++) {
cout << strs[i] << endl;
}
return 0;
}
```
在这个示例代码中,sort函数用来比较两个字符串的大小,并在必要时交换它们的位置。在主函数中,我们通过循环输入5个字符串,然后调用sort函数进行排序,最后输出排序后的结果。需要注意的是,我们在调用sort函数时,需要传递字符串的地址,而不是字符串本身。
pstr_cpy将s2字符串的内容复制到s1字符串,返回新的s1的长度。 pstr_cat将s2字符串的内容连接到s1字符串的后面,返回新的s1的长度。 参数中,size是s1的数组长度
pstr_cpy函数的实现如下:
```c
#includestring.h>
int p_cpy(char *s1, const char *s2, size) {
int len = strlen(s2);
int copy_len = len < size ? len : size - 1;
strncpy(s1, s2, copy_len);
s1[copy_len] = '\0';
return copy_len;
}
```
pstr_cat函数的实现如下:
```c
#include <string.h>
int pstr_cat(char *s1, const char *s2, int size) {
int len1 = strlen(s1);
int len2 = strlen(s2);
int copy_len = len2 < size - len1 ? len2 : size - len1 - 1;
strncat(s1, s2, copy_len);
return len1 + copy_len;
}
```
这两个函数都使用了C标准库中的字符串函数`strncpy`和`strncat`来进行字符串的复制和连接。其中,`size`参数表示`s1`数组的长度,用于限制复制或连接的最大长度。函数返回的是新的`s1`字符串的长度(不包括结尾的空字符)。
阅读全文