我尝试使用putchar()和getchar()来读取用户的一串字符,然后我的循环将打印每个字符三次,打印一个新行等等,直到每一个变量中的字符" userInput"已被打印。当我尝试编译我的程序时,我收到以下错误:
warning: assignment makes pointer from integer without a cast [enabled by default]
userInput = getchar();
^
warning: comparison between pointer and integer [enabled by default]
while(counter < strlen(userInput))
^
error: array subscript is not an integer
putchar(userInput[counter]);
^
error: array subscript is not an integer
putchar(userInput[counter]);
^
error: array subscript is not an integer
putchar(userInput[counter]);
^
如何修复这些错误?我是C的新手,无法弄清楚指针转换错误意味着什么,以及为什么我的计数器变量不起作用。
我的代码如下:
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main(void)
{
char *userInput;
int *counter = 0;
printf("Enter a string of characters: ");
userInput = getchar();
while(counter < strlen(userInput))
{
putchar(userInput[counter]);
putchar(userInput[counter]);
putchar(userInput[counter]);
printf("\n");
counter++;
}
}
答案 0 :(得分:1)
我不确定你为什么要这样做,但如果我必须这样做,我可能会这样做 -
01 #include <stdio.h>
02 int main()
03 {
04 char userInput[100],c;
05 int length, i=0;
06
07 printf("Enter a string of characters: ");
08 while(c=getchar()){
09 if(c=='\n')
10 break;
11 userInput[i++] = c;
12 }
13 userInput[i]='\0';
14 length = i;
15
16 for(i=0; i<length; i++){
17 putchar(userInput[i]);
18 putchar(userInput[i]);
19 putchar(userInput[i]);
20 putchar('\n');
21 }
22 return 0;
23 }
我已经添加了行号以便更好地理解。 这是我做的 -
所以这就是你想做的任务。我试图让它尽可能地初学者友好,对任何疑问发表评论。 乐意效劳。 :)
答案 1 :(得分:0)
如果你想使用一个字符指针来存储数据,你需要有一个现有的字符串,你可以使这个字符指针指向,或者你需要动态分配一些字节,然后可以用来存储新数据。
char string[50];
相当于
int counter=0;
如果只存储单个值,则整数不需要是指针。所以它应该只是
{{1}}
在你写的程序中, getchar()只需要一个字符
你应该使用像gets(string)这样的字符串处理函数; 去做这个 它会让事情变得更容易
答案 2 :(得分:-1)
我认为您应该在循环中搜索fgets或scanf或调用getchar(),但是您需要使用特定的char来退出循环。