我刚刚开始编码,我正在制作如下程序, 我从用户那里拿了三个字符串,例如
this is
is what
new
输出大写的每个单词的第一个字母,然后输出''和一个' ' (空间角色)
所以输出应该是
T. I. I. W. N.
所以我得到的输出是
T. ‚. xWô¿Œ @ I. W. ô N. ÿÿÿ
我得到了值但是最后还附加了一些垃圾值,我尝试在最后添加NULL,但这并没有帮助。
代码如下:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
int countWords(char* arr);
int main(void){
int i = 0, j = 0, count[3], num = 0, pos = 0, flag = 0;
char val[3][50], copyName[3][50];
for(i =0; i< 3; i++){
printf("Enter: \n");
scanf("%[^\n]%*c", &val[i]);
num = countWords(val[i]);
//printf("%d word(s) \n", num);
}
for(i = 0; i<3; i++){
pos = 0;
flag = 0;
for(j = 0; j<strlen(val[i]); j++){
if(j == 0 || val[i][j - 1] == ' '){
copyName[i][j] = toupper(val[i][pos]);
pos++;
copyName[i][pos] = '.';
pos++;
copyName[i][pos] = ' ';
pos++;
flag++;
if(flag == count[i])
copyName[i][pos] = '\0';
}
else{
continue;
}
}
printf("%s \n", copyName[i]);
}
return 0;
}
int countWords(char* arr){
int i = 0, flag = 0;
for(i = 0; arr[i] != '\0' ; i++){
if(arr[i] == ' ')
flag++;
}
return flag+1;
}
如果对我想达到的目标有更好的方法,请分享。感谢
代码编辑,请看一下。
答案 0 :(得分:0)
这是程序逻辑中的一个错误,谢谢大家,谁为这个问题做出了贡献
代码如下:
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<conio.h>
int countWords(char* arr);
int main(void){
int i = 0, j = 0, count[3], num = 0, pos = 0, flag = 0;
char val[3][50], copyName[3][50];
clrscr();
for(i =0; i< 3; i++){
printf("Enter: \n");
scanf("%[^\n]%*c", &val[i]);
num = countWords(val[i]);
count[i] = num;
printf("%d word(s) \n", num);
}
for(i = 0; i<3; i++){
pos = 0;
flag = 0;
for(j = 0; j<strlen(val[i]); j++){
// printf(" %d",strlen(val[i]));
if(j == 0 || val[i][j - 1] == ' '){
copyName[i][pos] = toupper(val[i][j]);
pos++;
copyName[i][pos] = '.';
pos++;
copyName[i][pos] = ' ';
pos++;
flag++;
// printf(" %d", flag);
if(flag == count[i])
// printf("Put an end");
copyName[i][pos] = '\0';
}
else{
continue;
}
}
printf(" \n %s \n", copyName[i]);
}
return 0;
}
int countWords(char* arr){
int i = 0, flag = 0;
for(i = 0; arr[i] != '\0' ; i++){
if(arr[i] == ' ')
flag++;
}
return flag+1;
}