|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include <stdio.h>
- #include <string.h>
- #include <math.h>
- #include <time.h>
- /*在字符串内查找一个字符,并输出其出现的次数和下标 */
- typedef struct
- {
- int index;
- int count;
- } strsch;
- strsch *strch(char str[], char key, strsch *s) //定义一个返回值为结构体指针的函数
- {
- int cnt = 0; //保存字符出现的次数
- int inx = 0; //保存字符首次出现的下标
- char *p = NULL; //初始化临时指针
- p = str;
- for (size_t i = 0; *(p + i) != '\0'; i++)
- {
- if (*(p + i) == key)
- {
- cnt++; //判断字符出现的次数
- }
- }
- for (size_t i = 0; *(p + i) != '\0'; i++)
- {
- if (*(p + i) == key)
- {
- inx = i; //判断字符首次出现的下标
- break;
- }
- }
- if (cnt < 1) //字符不存在的情况
- {
- cnt = -1;
- inx = -1;
- }
- s->index = inx;
- s->count = cnt;
- return s;
- }
- int main(int argc, char const *argv[])
- {
- strsch *i;
- char c;
- srand(time(NULL));
- char str[26];
- for (size_t j = 0; j < 26; j++)
- {
- str[j] = (j / 2) > sqrt(j) ? (rand() % 13 + 78) : (rand() % 13 + 110); //给字符串赋值
- }
- str[26] = '\0'; //手动添加结束字符
- printf("字符串:\n%s", str);
- printf("\n");
- scanf("%c", &c);
- strch(str, c, i);
- printf("字符:%c\n出现次数: %d\n出现位置: %d", c, i->count, i->index);
- return 0;
- }
复制代码
================================================
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-ltrxuxdl.yf5 --stdout=Microsoft-MIEngine-Out-4ad1gvxa.e3h --stderr=Microsoft-MIEngine-Error-nqlgwzei.1dy --pid=Microsoft-MIEngine-Pid-bcfkbuyo.ohm --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
字符串:
ouxvoyQTXNUQNPRQNSPSPYUQTT
o
字符:o
出现次数: 3
出现位置: 0
E:\Administrator\Documents\My C>cmd /C "c:\Users\Administrator\.vscode\extensions\ms-vscode.cpptools-0.23.1\debugAdapters\bin\WindowsDebugLauncher.exe --stdin=Microsoft-MIEngine-In-smw554iw.nkf --stdout=Microsoft-MIEngine-Out-nykzwlxt.qnm --stderr=Microsoft-MIEngine-Error-gob4nn2o.lis --pid=Microsoft-MIEngine-Pid-odowxlij.cda --dbgExe=E:\MinGW\bin\gdb.exe --interpreter=mi "
字符串:
xnxyvsQOVYSNUTOTUZVNXUXZOT
x
字符:x
出现次数: 3为什么次数总是多一个,头大,找不到问题在哪
出现位置: 0
E:\Administrator\Documents\My C>
两处错误,不知道你的怎么就成功了,
strsch *i; //这是一个结构体指针,不能直接传进去赋值给它
第二处,str数组大小应该是27才对,这样str[26] = '\0'才会没问题。
|
|