user-0 提问: 用循环读入字符串的问题

回复:
user: user-1
content: 试试这个 /*************************************************************************     > File Name: getstring.c     > Author: Jukay     > Mail: hellojukay@gmail.com      > Created Time: 2014年11月07日 星期五 13时46分24秒  ************************************************************************/  #include<stdio.h> int main() {     char sentence[40];     int i;     for(i = 0; i < 40  ;++i)     { 	scanf("%c",&sentence[i]); 	if(sentence[i] == '\n') 	    break;     }     sentence[i] = '\0';     printf("%s",sentence);     printf("\n");     return 0; }

user: user-2
content: 应该是<40,没有=。。。

user: user-0
content: 引用 8 楼 u013491662 的回复:跟6楼程序一样了。。。  #include <stdio.h> int main() { 	char sentence[40]; 	int length; 	int n; 	for (n = 0; n < 40; n++) 	{ 		scanf("%c", &sentence[n]); 		if (sentence[n] == '\n') 			break; 	} 	n = 0; 	while (sentence[n] != '\n') 	{ 		length = n; 		n++; 		if (n == 40) 		{ 			length = 39; 			break; 		} 	} 	for (n = length; n >= 0; n--) 	{ 		printf("%c", sentence[n]); 	} 	return 0; }  输出超过40也没问题！嗯。不过第39个字符和换行符之间的字符都被抛弃了。还是谢谢。

user: user-0
content: 引用 7 楼 u013491662 的回复: #include <stdio.h> int main() { 	char sentence[40]; 	int length; 	int n; 	for (n = 0; n < 40; n++) 	{ 		scanf("%c", &sentence[n]); 		if (sentence[n] == '\n') 			break; 	} 	n = 0; 	while (sentence[n] != '\n') 	{ 		length = n; 		n++; 	} 	for (n = length; n >= 0; n--) 	{ 		printf("%c", sentence[n]); 	} 	return 0; }  程序不是很健壮，如果输入超出40个字符程序就出毛病了谢谢，我简化成这样了。 #include <stdio.h> int main(void) {     char sentence[40];     int n;      for(n = 0; n < 40; n++)     {         scanf("%c", &sentence[n]);         if(sentence[n] == '\n')             break;     }     for(n -= 1; n >= 0; n--)     {         printf("%c", sentence[n]);     }     return 0; }

user: user-3
content: #include <stdio.h> int main(void) {     char sentence[40];     int length;     int n = 0; 	scanf("%c", &sentence[n]); 	getchar(); 	while (sentence[n] != '\n') 	{ 		n++; 		scanf("%c", &sentence[n]);	 	}          while(n--)     {         printf("%c", sentence[n]);     }     return 0; }

user: user-4
content: 跟6楼程序一样了。。。  #include <stdio.h> int main() { 	char sentence[40]; 	int length; 	int n; 	for (n = 0; n < 40; n++) 	{ 		scanf("%c", &sentence[n]); 		if (sentence[n] == '\n') 			break; 	} 	n = 0; 	while (sentence[n] != '\n') 	{ 		length = n; 		n++; 		if (n == 40) 		{ 			length = 39; 			break; 		} 	} 	for (n = length; n >= 0; n--) 	{ 		printf("%c", sentence[n]); 	} 	return 0; }  输出超过40也没问题！

user: user-4
content: #include <stdio.h> int main() { 	char sentence[40]; 	int length; 	int n; 	for (n = 0; n < 40; n++) 	{ 		scanf("%c", &sentence[n]); 		if (sentence[n] == '\n') 			break; 	} 	n = 0; 	while (sentence[n] != '\n') 	{ 		length = n; 		n++; 	} 	for (n = length; n >= 0; n--) 	{ 		printf("%c", sentence[n]); 	} 	return 0; }  程序不是很健壮，如果输入超出40个字符程序就出毛病了

user: user-5
content: char sentence[40];     int length;     int n;       for(n = 0; n <40; n++)/*应该是小于四十，不加等于号*/ 	{ 		char ch=getchar(); 		sentence[n]=ch; 		if(ch=='\n')    /*这里加一个判断语句就好了*/ 			break; 	}     n = 0;     while(sentence[n] != '\n')     {         length = n;         n++;     }     for(n = length; n >= 0; n--)     {         printf("%c", sentence[n]);     } 	getchar();

user: user-0
content: 百度了半天了。到现在还是不知道怎么搞=。=

user: user-0
content: 引用 2 楼 Intel0011 的回复:为什么把简单问题复杂化 #include <stdio.h>  int main(void) {    char sentence[40];     scanf("%40s", sentence);    puts(sentence);    return 0; }目的是反向输出字符串

user: user-0
content: 引用 2 楼 Intel0011 的回复:为什么把简单问题复杂化 #include <stdio.h>  int main(void) {    char sentence[40];     scanf("%40s", sentence);    puts(sentence);    return 0; }题目要求用%c

user: user-6
content: 为什么把简单问题复杂化 #include <stdio.h>  int main(void) {    char sentence[40];     scanf("%40s", sentence);    puts(sentence);    return 0; }

user: user-7
content: 这个是因为你的这一句： for(n = 0; n <= 40; n++)         scanf("%c", &sentence[n] 必须要循环41次才会结束。 否则执行不到下面。