| 
	
		|  Autor | Tema: Como devolver puntero con cadena vacia  (Leído 4,344 veces) |  
	| 
			| 
					
						| Destro- 
								
								 Desconectado 
								Mensajes: 66
								
								 
								www.onlyarg.com.ar
								
								
								
								
								
								     | 
 
Buenas. Me tira APPCRASH muy random cuando uso esto // otra funcion...char copy[64];
 strncpy(copy, getClipboard(), 63); // Crash
 // code...
 
 char *getClipboard()
 {
 char *strData;
 
 if(OpenClipboard(NULL))
 {
 HANDLE hClipboardData = GetClipboardData(CF_TEXT);
 if(hClipboardData != nullptr)
 {
 char *pchData = static_cast<char*>(GlobalLock(hClipboardData));
 if(pchData != nullptr)
 strData = pchData;
 else strData = "\0";
 
 GlobalUnlock(hClipboardData);
 }
 else strData = "\0";
 
 CloseClipboard();
 }
 return strData;
 }
 
Creo que es porque no estoy devolviendo correctamente el puntero de una cadena vaciá,como se hace ?,hay algún otro error o algo para mejorar ?.
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| ivancea96 
								       
								
								 Desconectado 
								Mensajes: 3.412
								
								 
								ASMático
								
								
								
								
								
								     | 
 
Fíjate en qué parte falla. Ve poniendo pausas, por ejemplo. A mi me parece que va bien (no lo probé).  
 
 |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Eternal Idol 
								Kernel coder ajeno al tiempo 
								Moderador
								      Desconectado 
								Mensajes: 5.970
								
								 
								Israel nunca torturó niños, ni lo volverá a hacer.
								
								
								
								
								
								     | 
 
Siempre inicializa las variables, si OpenClipboard falla strData tiene un valor indefinido. char *strData = "";
 PD. La cadena vacia como la hiciste es correcta tambien. |  
						| 
								|  |  
								|  |  En línea | 
 
 La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.Juan Domingo Perón
 |  |  |  | 
			| 
					
						| Destro- 
								
								 Desconectado 
								Mensajes: 66
								
								 
								www.onlyarg.com.ar
								
								
								
								
								
								     | 
 
ok
 entonces que puede estar causando el crash (Infracción de acceso al leer la ubicación 0x00000000) ?,es muy random y no logro saber en que situación se genera.
 el trace solo me marca strncpy.
 
 @EDIT
 creo que ya esta solucionado,al inicializar la variable parece no crashear mas.
 voy a seguir probando por las dudas
 |  
						| 
								|  |  
								| « Última modificación: 17 Marzo 2014, 22:23 pm por Destro- » |  En línea | 
 
 |  |  |  | 
			| 
					
						| amchacon 
								       
								
								 Desconectado 
								Mensajes: 1.211
								
								   | 
 
strData = "\0";
 Estas apuntando a una cadena de 2 nulos. La sintaxis correcta sería: strData = "";
 Pero vamos, eso es irrelevante para los crashs. |  
						| 
								|  |  
								|  |  En línea | 
 
 |  |  |  | 
			| 
					
						| Destro- 
								
								 Desconectado 
								Mensajes: 66
								
								 
								www.onlyarg.com.ar
								
								
								
								
								
								     | 
 
Si,parece que era eso   . Por ahora parece estar funcionado con la variable inicializada. Gracias. |  
						| 
								|  |  
								| « Última modificación: 17 Marzo 2014, 22:30 pm por Destro- » |  En línea | 
 
 |  |  |  | 
			| 
					
						| Eternal Idol 
								Kernel coder ajeno al tiempo 
								Moderador
								      Desconectado 
								Mensajes: 5.970
								
								 
								Israel nunca torturó niños, ni lo volverá a hacer.
								
								
								
								
								
								     | 
 
Si,parece que era eso   . Por ahora parece funcionado con la variable inicializada. Gracias.De nadas. PD. Por definicion una cadena esta terminada en 0 asi que si su primer byte es 0 ahi termina. |  
						| 
								|  |  
								|  |  En línea | 
 
 La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.Juan Domingo Perón
 |  |  |  |  |  
 
	
 
 
				
					
						| Mensajes similares |  
						|  | Asunto | Iniciado por | Respuestas | Vistas | Último mensaje |  
						|   |   | Cadena estatica al devolver puntero de cadena. Programación C/C++
 | alem29 | 2 | 3,857 |  5 Febrero 2012, 23:38 pm por eleon
 |  
						|   |   | Si variable PHP vacia(no empty(),is_null,isset) que no tome 0 como vacia en POST PHP
 | Graphixx | 9 | 23,189 |  12 Mayo 2012, 18:58 pm por it3r
 |  
						|   |   | Devolver puntero a cadena en función ASM
 | silver2050 | 2 | 3,354 |  22 Mayo 2013, 00:31 am por silver2050
 |  
						|   |   | Devolver una cadena pasada como argumento a una funcion Programación C/C++
 | eduu15 | 4 | 3,898 |  9 Abril 2018, 03:18 am por MAFUS
 |  
						|   |   | Como leer una cadena de caracteres vacia Programación C/C++
 | josueroddy | 1 | 3,545 |  23 Octubre 2021, 00:41 am por K-YreX
 |    |