一个简单的c程序统问题

来源:百度知道 编辑:UC知道 时间:2024/06/06 15:59:30
#include "stdafx.h"
#include "stdio.h"
#include "ctype.h"
#include <cstring>
#include <iostream>
#include <string.h>
#include <stdlib.h>

using namespace std;

int main(int argc, char* argv[])
{
string str1;
int dignum, charnum, blacknum;
int i = 0;
char ch;

printf("please input the string you want to statistics: ");
scanf("%s", &str1);
ch = str1[0];
printf("ch = %c\n", ch);
str1[0] = 'S';
printf("str1 = %s\n", &str1);

while(ch!='\0')
{
if(isalpha(ch))
{
charnum++;
}
else if(isdigit(ch))
{
dignum++;
}
else if(ch == ' ')
blacknum++;

i++;
ch = str1[i];
cout<<"ch = "<<ch<<endl;
}

scanf("%s", &str1);
这里改成
scanf("%s", str1);
字符串不要再取地址,它本身就是地址
给你调试过了

int main(int argc, char* argv[])
{
char str1[80];
int dignum, charnum, blacknum;
int i = 0;
char ch;

printf("please input the string you want to statistics: ");
gets(str1);
ch = str1[0];
printf("ch = %c\n", ch);
str1[0] = 'S';
printf("str1 = %s\n", str1);

while(ch!='\0')
{
if(isalpha(ch))
{
charnum++;
}
else if(isdigit(ch))
{
dignum++;
}
else if(ch == ' ')
blacknum++;

i++;
ch = str1[i];
cout<<"ch = "<<ch<<endl;
}

printf("Hello World!\n");
return 0;
}